開発ブログ

株式会社Nextatのスタッフがお送りする技術コラムメインのブログ。

電話でのお問合わせ 075-744-6842 ([月]-[金] 10:00〜17:00)

  1. top >
  2. 開発ブログ >
  3. PHP >
  4. Laravel >
  5. LaravelのBladeテンプレート
no-image

LaravelのBladeテンプレート

Laravelのデフォルトのテンプレートエンジンである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'))
TOPに戻る