blade

Blade

๋ผ๋ผ๋ฒจ์˜ ํ…œํ”Œ๋ฆฟ ์–ธ์–ด์ธ ๋™์‹œ์— html ์ปดํŒŒ์ผ ์—”์ง„์œผ๋กœ php์Šคํฌ๋ฆฝํŠธ๋กœ ์ปดํŒŒ์ผ ํ•œ ํ›„ ๋‹ค์‹œ html๋กœ ์ปดํŒŒ์ผํ•˜๊ฒŒ ๋œ๋‹ค. ์ด๋•Œ ํ™•์žฅ์ž๋Š” .blade.php์ด๋ฉฐ resources/views์˜ ํ•˜์œ„์— ์กด์žฌํ•ด์•ผ ํ•œ๋‹ค.

๋ณ€์ˆ˜๋ฅผ ์ด์šฉํ•œ ๋ฌธ์ž์—ด ๋ณด๊ฐ„

<p>{{$gretting or "hello" }}</p>

<?= isset($gretting) ? "{gretting} : 'Hello';>์™€ ๊ฐ™์€ ๋ฌธ๋ฒ•์œผ๋กœ ์ด์ค‘ ์ค‘๊ด„ํ˜ธ{{}}๋ฅผ ํ†ตํ•ด ๋ฌธ์ž์—ด ๋ณด๊ฐ„์ด ๊ฐ€๋Šฅํ•˜๊ณ  ๋ธ”๋ ˆ์ด๋“œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ xss๊ณต๊ฒฉ์œผ๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•ด ํŠน์ˆ˜๋ฌธ์ž๋ฅผ ์ด์Šค์ผ€์ดํ”„ํ•˜๋Š”๋ฐ ์ด์Šค์ผ€์ดํ”„๋ฅผ ํ•˜์ง€ ์•Š๊ณ ์ž ํ•˜๋ฉด {!! $var !!}๋ฌธ๋ฒ•์„ ์ด์šฉํ•˜๋ฉด ๋œ๋‹ค.

์ฃผ์„

html์˜ ์ฃผ์„ ํ˜•์‹์ธ <!-- ์ฃผ์„ -->๋„ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๊ณ  ๋ธ”๋ ˆ์ด๋“œ ์ฃผ์„ ํ˜•์‹์ธ {{--์ฃผ์„--}} ํ˜•์‹๋„ ์ด์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ฐจ์ด์ ์€ htmlํ˜•์‹์€ ์‘๋‹ต๋˜๋Š” html๊นŒ์ง€ ๋‚จ์•„์žˆ๋Š” ๋ฐ˜๋ฉด ๋ธ”๋ ˆ์ด๋“œ ์ฃผ์„ ํ˜•์‹์€ php๋กœ ์ปดํŒŒ์ผ๋˜๋Š” ํƒ€์ด๋ฐ์— ์‚ฌ๋ผ์ ธ ์‘๋‹ต๋˜๋Š” html์—๋Š” ๋‚จ์•„ ์žˆ์ง€ ์•Š๋Š”๋‹ค.

์ œ์–ด ๊ตฌ์กฐ

@if($itemCount = count($items))
    <p>{{$itemCount}} ์ข…๋ฅ˜์˜ ๊ณผ์ผ์ด ์žˆ์Šต๋‹ˆ๋‹ค. </p>
@else
    <p>์—†์Šต๋‹ˆ๋‹ค.</p>
@endif

๋ธ”๋ ˆ์ด๋“œ๋Š” @์„ ์ด์šฉํ•˜์—ฌ ๋ชจ๋“  ์ œ์–ด๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•œ๋‹ค.

@unless(์กฐ๊ฑด์‹) : @if(!์กฐ๊ฑด์‹) ๊ณผ ๊ฐ™์€ ๋ฌธ๋ฒ•์ด๋‹ค.

๋ฐ˜๋ณต๋ฌธ

@foreach

<ul>
    @foreach($items as $item)
        <li>{{$item}}</li>
    @endforeach
</ul>

php๊ฐ™์ด @foreach๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๊ณ  for, while๋„ ์ด์šฉ๊ฐ€๋Šฅํ•˜๋‹ค.

@forelse

<ul>
    @forelse($items as $item)
        <li>{{$item}}</li>
    @empty
        <li>์—†์Šต๋‹ˆ๋‹ค. </li>
    @endforelse
</ul>

php์—๋Š” ์—†๋Š” forelse๋กœ @if์™€ @foreach์˜ ๊ฒฐํ•ฉ์ด๋‹ค. view์—์„œ ๋„˜์–ด์˜จ ๊ฐ’์ด ์žˆ์œผ๋ฉด @forelse๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์—†์œผ๋ฉด @empty๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

ํ…œํ”Œ๋ฆฟ ์ƒ์†

๊ฐ ๋ถ€๋ถ„๋ถ€๋ถ„์„ ์ปดํฌ๋„ŒํŠธํ™” ํ•˜์—ฌ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•

@yield

<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title> ์˜ˆ์ œ </title>
</head>
<body>
    @yield('content')
</body>
</html>

yield๋Š” ๋‚˜๋ฅผ ์ƒ์†๋ฐ›๋Š” ์ž์‹์ด ๊ฐ€์ง„ content๋ผ๊ณ  ์ด๋ฆ„ ๋ถ™์ธ ์„น์…˜์˜ ๋‚ด์šฉ์„ ์—ฌ๊ธฐ์— ์ถœ๋ ฅํ•˜๊ฒ ๋‹ค๋Š” ์˜๋ฏธ

@extends์™€ @section

@exends('layout.master')

@section('content')
    <p>hi</P>
@endsection

์ž์‹ ํ…œํ”Œ๋ฆฟ์€ @extends๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ถ€๋ชจํ…œํ”Œ๋ฆฟ์„ ์ƒ์†๋ฐ›์„ ์ˆ˜ ์žˆ๊ณ  @section๋ถ€๋ถ„์œผ๋กœ ์ปจํ…ํŠธ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค. @endsection๋Œ€์‹ ์— @stop์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

@include

@extendsํ‚ค์›Œ๋“œ๊ฐ€ ์—†๋Š” ์ˆœ์ˆ˜ html์กฐ๊ฐ์„ ์กฐ๊ฐ ๋ทฐ๋ผ๊ณ  ํ•˜๊ณ  ์ด ์กฐ๊ฐ ๋ทฐ์—์„œ๋„ ๋ธ”๋ ˆ์ด๋“œ์˜ ๊ธฐ๋Šฅ์„ ๋ชจ๋‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•ด๋‹น ์กฐ๊ฐ ๋ทฐ๋ฅผ ๋‹ค๋ฅธ ํ…œํ”Œ๋ฆฟ์—์„œ ๊ฐ€์ ธ๋‹ค ์‚ฌ์šฉํ•˜๋ ค๋ฉด @include()๋ฅผ ์ด์šฉํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์ƒ์†์‹œ ๋ฌธ์ œ์ 

๊ณ„์ธต๊ตฌ์กฐ๋กœ section์„ ์ƒ์†ํ•˜๋‹ค๋ณด๋ฉด section์ด๋ฆ„์ด ์ค‘๋ณต๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์กด์žฌํ•œ๋‹ค. ์ด๋•Œ ๊ฐ€์žฅ ๋จผ์ € ๋“œ๋Š” ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์ด ์ด๋ฆ„์„ ์กฐ๊ธˆ์ˆ˜์ •ํ•ด ์—ฌ๋Ÿฌ๊ฐœ์˜ section์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์ด์ง€๋งŒ ์ด๋Š” ๊ตฌ์กฐ๋„ ์ง€์ €๋ถ„ํ•ด์ง€๊ณ  section์ด ๋งŽ์•„์ ธ ๊ด€๋ฆฌ๊ฐ€ ํž˜๋“ค์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค.

@section('script')
    @parent
    <script>
        alert("footer");
    </script>
@endsection

@parentํ‚ค์›Œ๋“œ๋กœ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์›๋ž˜ ์ค‘๋ณต๋˜๋Š” ์ด๋ฆ„์˜ ๊ฒฝ์šฐ ์ œ์ผ depth๊ฐ€ ๊นŠ์€ section๋งŒ ์ˆ˜ํ–‰์ด ๋˜๋Š” ๋ฐ˜๋ฉด์— @parent๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์•„๋ž˜ ๊ตฌ๋ฌธ์„ ์‹คํ–‰ํ•˜๊ธฐ์ „ ์ค‘๋ณต๋œ ๋ถ€๋ชจsection์„ ๋จผ์ € ์ˆ˜ํ–‰ํ•œ๋‹ค.

@section('script')
    <script>
        alert("footer");
    </script>
    @parent
@endsection

์ด๋Š” footer๋จผ์ € ์ˆ˜ํ–‰ํ•˜๊ณ  ๋ถ€๋ชจsection์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

Last updated