목차
블레이드 템플릿
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
'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 |