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'))