LaravelのBladeテンプレート
LaravelのデフォルトのテンプレートエンジンであるBladeについてです。
Bladeの特徴は簡明な記述とテンプレートの継承が非常に柔軟な点かと思います。
Bladeの特徴は簡明な記述とテンプレートの継承が非常に柔軟な点かと思います。
テンプレートの継承
layouts/mater.blade.php という名前で全体レイアウト用のテンプレートを作成します。
<!DOCTYPE HTML> <html lang="ja"> <head> <meta charset="utf-8"> <title>Bladeのテスト</title> </head> <body> <div id="content"> @yield('content') </div> <aside id="sidebar"> @section('sidebar') <p>親のsidebarセクション</p> @show </aside> </body> </html>子となるviewでテンプレートを継承するには@extendsで親となるテンプレートを指定します。 ファイル名は〜.blade.phpとして保存します。
@extends('layouts.master') @section('sidebar') @parent <p>親のsidebarのセクションに記述した内容に追記</p> @stop @section('content') <p>コンテンツ</p> @stop@section〜@stopの間に書いた内容が、親のテンプレートの該当sectionに埋め込まれます。 @parentという記述によって親のsectionに書いた内容を呼び出し、追記することもできます。サイドバーなどの内容を整理するのに便利ですね。
echoとエスケープ
データのechoは{{}}、エスケープする場合は{{{ }}}で囲みます。
{{ $name }} {{{ $html }}}
制御構文
ifやforeachなどの制御構文は@を用いて略記できます。@if (count($comments) >= 1) @foreach($comments as $comment) {{$comment->title}} @endforeach @else コメントはありません。 @endif
サブビューのインクルード
部分的に共通のビューを読み込む場合などはincludeを使います。
@include('view.name', array('some'=>'data'))