Laravel

Laravel4のBladeテンプレート

更新日:

今日は、Laravel4のBladeテンプレートについて調べてみたいと思います。Laravelには、コントローラのレイアウトでテンプレートを指定するコントローラレイアウトもありますが、Bladeテンプレートがかなり便利ですので、Laravel3との違いなどを調べてみたいと思います。

Bladeテンプレートの定義

1. それでは、まず下記にBladeテンプレートのマスタービューを定義してみます。TwitterBootstrapを使用してレイアウトしています。

app/views/layouts/master.blade.php

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>マスタービュー</title>
<meta name="viewport" content="width=device-width,minimum-scale=1">
<link href={{ URL::to('tbs/css/bootstrap.min.css')}} rel="stylesheet">
<link href={{ URL::to('tbs/css/bootstrap-responsive.min.css')}} rel="stylesheet">
</head>
<body>
<div class="navbar">
<div class="navbar-inner">
<div class="ccontainer">
<a href="#" class="brand">WinRoad徒然草</a>
<ul class="nav">
 @section('navigation')
 <li><a href='#'>TOP</a></li>
 <li><a href='#'>UPDATE</a></li>
 @show
</ul>
</div>
</div>
</div>
<div class="container">
 @yield('content')
</div>
<script src="http://code.jquery.com/jquery-1.9.1.min.js">
</script>
<script src={{ URL::to('tbs/js/bootstrap.min.js') }}></script>
</body>
</html>
  • 7-8行目:publicフォルダ内にtbs(任意)フォルダを作成しました。そして、ダウンロードして解凍したTwitterbootstrapのcss、img、jsフォルダをtbsフォルダにコピーしています。
  • 19行目:@showはLaravel3では、yield_sectionだったような気がします。
  • 27行目:jqueryはCDNから参照してくるように設定しています。
  • 29行目;public/tbs/jsフォルダから bootstrap.min.jsファイルを参照しています。
  • ※【追加情報】Htmlクラスが復活していますので、上記の7-8行目は下記のように記述することができます。
    {{ HTML::style('tbs/css/bootstrap.min.css') }}
    {{ HTML::style('tbs/css/bootstrap-responsive.min.css') }}

    また、29行目は下記のように記述できます。

    {{ HTML::script('tbs/js/bootstrap.min.js') }}

2. 次にhello/index.phpファイルを下記のように修正します。

laravel4/app/views/hello/index.blade.php

@extends('layouts.master')
@section('navigation')
 @parent
 <li><a href='#'>追加ナビ</a></li>
@stop
@section('content')
<h2>ようこそ{{ $name }}さん</h2>
<h2>あなたは{{ $jusyo }}に住んでいます。</h2>
<p>helloフォルダ内のindex.blade.phpファイルです。</p>
<?php echo $footer?>
@stop
  • 1行目の@extends()はLaravel3では、@layout()でした。
  • 5行目の@stopはLaravel3では、@endsectionでした。

3. ルーターは、『Laravel4のビュー』で作成したルーターをそのまま使っていますが、念のために下記に記述しておきます。

laravel4/app/routes.php

Route::get('hello', function() {
 $data['name']='中田';
 $data['jusyo']='東京都目黒区';
 $data['corporation']='Builwing';
 $view=View::make('hello/index',$data);
 $view->nest('footer','hello.footer',$data); 
return $view;});

4. ブラウザでアクセスしてみます。

http://localhost/laravel4/public/hello

laravel4_041

その他のBlade制御構文

5. データ出力のechoは、{{ $name }}と波括弧を使用します。そして、出力をエスケープしたい場合は、三重の波括弧にを使用します。{{{ $name }}}

6. If文に関しては、ほとんど変わっていないと思います。

@if(coutn($records) > 0)
 レコードがあった!
 @else
 レコードがなかった!
 @endif

7. ループ文も同じだと思いますので、省略します。

本日は以上です。

-Laravel
-

Copyright© WinRoad徒然草 , 2018 All Rights Reserved Powered by AFFINGER5.