Blade Template이란?
- 라라벨에 포함된 단순하지만 강력한 템플릿 엔진
- 블레이드 템플릿 구문이 php 코드로 컴파일 되어 동작
- 블레이드 지시어를 통해 템플릿 상속 및 데이터 표시, PHP 제어 구조에 대해 편의성 제공
- 파일 확장자는 .blade.php를 사용
- 일반적으로 파일은 resources/views 디렉토리에 배치
주석
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>layout</title>
</head>
<body>
<h1>이거는 보입니다.</h1>
{{-- <h1>주석 처리되서 안보입니다.</h1> --}}
<p>내용내용</p>
</body>
</html>
데이터 출력
- {{ 출력할 데이터 }} 로 작성
- {{ }} 문은 XSS 공격을 방지하기 위해 PHP의 htmlspecialchars 함수를 통해 자동으로 처리
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>layout</title>
</head>
<body>
<h1>{{ $name }}</h1>
</body>
</html>
@include(뷰[, 배열])
- 다른 뷰를 포함
- include할 뷰에 데이터를 보내고 싶을 경우 두번째 아규먼트에 배열 셋팅
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>layout</title>
</head>
<body>
@include('layout.header')
@include('layout.footer', ['key1' => '홍길동'])
</body>
</html>
<h1>헤더입니다.</h1>
<h1>풋터입니다.</h1>
<p>파라미터로 받은 값은 {{ $key1 }} 입니다.</p>
@extends(뷰)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>layout</title>
</head>
<body>
<h1>레이아웃 뷰 입니다.</h1>
</body>
</html>
{{-- 상속 --}}
@extends('layout.layout')
@yield(섹션명[, 기본값])
- 자식 뷰에서 해당하는 section에게 자리를 양도
- 자식한테 section이 없을 경우는 기본값 출력
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>@yield('title', '부모 타이틀')</title>
</head>
<body>
<h1>레이아웃 뷰 입니다.</h1>
<p>@yield('content', '부모 콘텐츠')</p>
</body>
</html>
{{-- 상속 --}}
@extends('layout.layout')
{{-- @yield & @section --}}
@section('title', '자식 타이틀')
@section(섹션명, 출력값)
- 부모 뷰에 해당하는 @yield 또는 @section~@show 에 삽입
- @section~@show의 경우 자식 뷰에 해당하는 @section이 없을 경우 부모의 것이 실행
- 여러 처리를 할 필요가 있다면 @section ~ @endsection으로 묶어서 작성
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>@yield('title', '부모 타이틀')</title>
</head>
<body>
@section('main')
<h2>부모 main입니다.</h2>
@show
@section('card')
<h2>부모 card입니다.</h2>
@show
</body>
</html>
{{-- 상속 --}}
@extends('layout.layout')
{{-- @yield & @section --}}
@section('title', '자식 타이틀')
@section('main')
<h2>자식 main입니다.</h2>
@endsection
if 와 반복문
{{-- @if : 조건문 --}}
@if($gender === 'F' )
<span>성별 : 여자</span>
@elseif($gender === 'M')
<span>성별 : 남자</span>
@else
<span>성별 : 기타</span>
@endif
<hr>
{{-- 반복문 --}}
{{-- @for ~ @endfor : for 반복문 --}}
@for($i = 0; $i < 5; $i++)
<span>for : {{$i}}</span>
@endfor
<hr>
{{-- @foreach ~ @endforeach : foreach 반복문 --}}
<h2>foreach 문</h2>
{{-- $loop : foreach, forelse에서 루프의 정보를 담고 있는 자동으로 생성되는 객체 --}}
@foreach($data as $key => $val)
<h4>남은 루프 횟수 : {{$loop->remaining}}</h4>
<span>{{$key." : ".$val}}</span>
<br>
@endforeach
<hr>
{{-- @forelse ~ @empty ~ @endforelse : 루프를 할 데이터의 길이가 1이상이면 @forelse처리, 배열의 길이가 0이면 @empty의 처리를 합니다. --}}
<h2>forelse 문</h2>
@forelse($data2 as $key => $val)
<span>{{$key." : ".$val}}</span>
<br>
@empty
<span>빈 배열입니다.</span>
@endforelse
<hr>