목차


 블레이드 템플릿

Laravel에서 제공하는 템플릿 엔진

템플릿 엔진은 동적인 웹 페이지를 생성하기위해 사용됨


 

 include, yield, section

다른 템플릿을 포함하는 방법

 

@include

{{-- resources/views/layout/layout.blade.php --}}

<body>
    @include('layout.inc.header')
</body>
{{-- resources/views/layout/inc/header.blade.php --}}

<h1>Header</h1>

 

2번째 인수로 값을 세팅하고, 해당 파일에서 변수로써 사용 가능

{{-- resources/views/layout/layout.blade.php --}}

<body>
    @include('layout.inc.footer', ['key1' => 'key1로 셋팅'])
</body>
{{-- resources/views/layout/inc/footer.blade.php --}}

<h1>Footer : {{$key1}}</h1>

 

@yield

{{-- resources/views/layout/layout.blade.php (부모 템플릿) --}}

{{--  자식 템플릿에 해당하는 section에게 자리를 양도,
	만약에 자식 템플릿에 해당 section이 없으면 두번째 인수를 사용  --}}
<header>
	<title>@yield('title', '부모타이틀')</title>
</header>
{{-- resources/views/blade.blade.php (자식 템플릿) --}}

{{-- 상속 : @extends --}}
{{-- 실제 호출한건 blade.blade.php 파일이지만,
	상속받은 layout.blade.php파일의 @include('layout.inc.header')가 출력됨 --}}
@extends('layout.layout')

{{-- 부모 템플릿에 해당하는 yield 부분에 자리를 차지 --}}
{{-- 부모와 동일한 key값에 자식의 값이 있다면 자식값을 사용, 없다면 부모값을 사용 --}}
@section('title', '자식 타이틀')

 

처리해야하는 코드가 많을 경우에는, @section ~ @endsection에 소스코드를 기재해서 사용함

{{-- resources/views/layout/layout.blade.php (부모 템플릿) --}}
<body>
    @yield('contents')
</body>
{{-- resources/views/blade.blade.php (자식 템플릿) --}}

@extends('layout.layout')

@section('contents')
    <hr>
    <h2>콘텐츠 섹션 입니다.</h2>
    <p>아아아아아</p>
    <p>콘텐츠 끝</p>
@endsection

 

자식 템플릿에 해당 section이 정의되어 있다면 자식템플릿의 section이 실행,

자식 템플릿에 해당 section이 정의되어 있지 않으면 부모 템플릿의 section이 실행

{{-- resources/views/layout/layout.blade.php (부모 템플릿) --}}
<body>
    @section('test')
        <h2>부모의 섹션 입니다.</h2>
        <p>부모부모</p>
    @show
</body>
{{-- resources/views/blade.blade.php (자식 템플릿) --}}

@extends('layout.layout')

@section('test')
    <hr>
    <h2>자식의 섹션입니다.</h2>
    <p>자식자식</p>
@endsection

 


 

 조건문

if문

// app/Http/Controllers/BladeController

class BladeController extends Controller
{
    public function index()
    {
        $arr = [
            'name' => '홍길동'
            ,'gender' => '여자'
            ,'birth' => '20081023'
            ,'addr' => '구미'
            ,'tel' => '01012345678'
        ];
        
        return view('blade')->with('data', $arr);
    }
}
{{-- resources/views/layout/layout.blade.php (부모 템플릿) --}}
<body>
    @yield('if')
</body>
{{-- resources/views/blade.blade.php (자식 템플릿) --}}

@extends('layout.layout')

@section('if')
    <h5>if</h5>
    @if($data['gender'] === '남자')
        <span>남자남자</span>
    @elseif($data['addr'] === '대구')
        <span>대구대구</span>
    @else
        <span>모든 조건 탈락</span>
    @endif
@endsection

 


 

 반복문

for문

{{-- resources/views/layout/layout.blade.php (부모 템플릿) --}}
<body>
    @yield('for')
</body>
{{-- resources/views/blade.blade.php (자식 템플릿) --}}

@extends('layout.layout')

@section('for')
    <hr>
    <h5>for</h5>
    @for ($i = 0; $i < 5; $i++)
        <span>{{$i}}</span>
    @endfor
@endsection

 

foreach문 : foreach와 forelse문의 경우, $loop라는 변수가 자동으로 생성됨

 

$loop :

      $loop->index : 현재 반복의 인덱스 (0부터 시작)

      $loop->iteration : 현재 반복의 번호 (1부터 시작)

      $loop->remaining : 현재 반복 이후의 남은 반복 횟수

      $loop->count : 전체 반복 횟수

      $loop->first : 첫 번째 반복인지 여부 (boolean)

      $loop->last : 마지막 반복인지 여부 (boolean)

      $loop->depth : 중첩된 반복문의 깊이 (첫 번째 반복문은 1, 두 번째 반복문은 2, ...)

      $loop->parent : 상위 반복문의 $loop 변수

// app/Http/Controllers/BladeController

class BladeController extends Controller
{
    public function index()
    {
        $arr = [
            'name' => '홍길동'
            ,'gender' => '여자'
            ,'birth' => '20081023'
            ,'addr' => '구미'
            ,'tel' => '01012345678'
        ];
        
        return view('blade')->with('data', $arr);
    }
}
{{-- resources/views/layout/layout.blade.php (부모 템플릿) --}}
<body>
    @yield('foreach')
</body>
{{-- resources/views/blade.blade.php (자식 템플릿) --}}

@extends('layout.layout')

@section('foreach')
    <hr>
    <h5>foreach</h5>
    @foreach($data as $key => $val)
        <span>{{$loop->count.' >> '.$loop->iteration.'     '}}</span>
        <span>{{$key.' : '.$val}}</span>
        <br>
    @endforeach
@endsection

 

forelse문

// app/Http/Controllers/BladeController.php

class BladeController extends Controller
{
    public function index()
    {
        $arr2 = [];
        return view('blade')->with('data2', $arr2);
    }
}
{{-- resources/views/layout/layout.blade.php (부모 템플릿) --}}
<body>
    @yield('foreles')
</body>
{{-- resources/views/blade.blade.php (자식 템플릿) --}}

@extends('layout.layout')

@section('forelse')
    <hr>
    <h5>forelse</h5>
    @forelse($data2 as $key => $val)
        <span>{{$key.' : '.$val}}</span>
        <br>
    @empty
        {{-- $data2가 빈 경우 출력됨 --}}
        <span>배열이 비어있음</span>
    @endforelse
@endsection

 

Github

Link

 

'Laravel > Laravel_ex' 카테고리의 다른 글

seeders(database/seeders), factories(database/factories)  (0) 2023.05.27
migrations(database/migrations)  (0) 2023.05.27
라우트 정의(routes/web.php)  (0) 2023.05.23
Laravel  (0) 2023.05.23

+ Recent posts