WinRoadのLaravel4初心者講座

次世代PHPフレームワークのLaravel4を初心者向けに解説して参ります。

Winroad徒然草の管理人がお届けします
Bladeのレイアウトテンプレートの作成

Bladeのレイアウトテンプレートの作成

このエントリーをはてなブックマークに追加

.phpファイルを.blade.ppに変更して、単に、{{ }} や @ を使うことにより、コードを簡略化するだけでは、Bladeテンプレートを使っている意味があまりありません。Bladeテンプレートの醍醐味は、ベーステンプレート(レイアウトテンプレート)を使うことによるビューファイルの自由度だと思います。

それでは、まずビューファイルの元になるレイアウト(ベース)テンプレートを作成したいと思います。

レイアウトテンプレートの場所は、app/viewsフォルダの中ならどこでもいいのですが、layoutsフォルダを作成してその中にレイアウトテンプレートを作成する事にします。

app/views/laytoutsフォルダの中にbase.blade.phpを作成して下記のように記述します。

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
@section('header')
<title>WinRoad</title>
@show
</head>

<body>
<ul class="nav">
@section('nav')
<li><a href='#'>TOP</a></li>
@show
</ul>
@yield('content')
<footer style="background-color:green;color:white;text-align:center">
@section('footer')
<h2><?php echo $corporation;?></h2>
@show
</footer>
</body>
</html>

まず最初に、hello.blade.phpを下記のように修正します。

@extends('layouts.base')
 @section('content')
 <h1>Hello World!</h1>
 <h2>ようこそ{{ $name }}さん</h2>
 <p>あなたのメールアドレスは{{ $email }}です。</p>
 <p>これはapp/views/hello.blade.phpファイルです</p>
 @stop

下記のように表示されます。ルーターは、Viewの基礎で作成したルーターをそのまま使用しています。

laravel010

  • @extends(‘layouts.base)で、レイアウトテンプレートにapp/views/layouts/base.blade.phpを使用しますと宣言しています。ちなみに、@extendsはLaravel3では、@layoutでした。
  • @section(‘conent’)で、ここから、@stop迄の間のタグをbase.blade.phpに挿入するように指示しています。
  • base.blade.phpの@yield(‘content’)は、「ここにcontentを挿入しますよ」という宣言です。ちなみに、yieldと言う英語の意味は、生産するとか収穫するとかいう意味ですね。

次に下記のように修正してみます。

@extends('layouts.base')
 @section('header')
 <title>Laravel初心者講座</title>
 @stop
 @section('nav')
 @parent
 <li><a href='#'>Link</a></li>
 @stop
 @section('content')
 <h1>Hello World!</h1>
 <h2>ようこそ{{ $name }}さん</h2>
 <p>あなたのメールアドレスは{{ $email }}です。</p>
 <p>これはapp/views/hello.blade.phpファイルです</p>
 @stop
 @section('footer')
 <h2>WinRoad</h2>
 @stop

下記のように表示されます。どこがどう変わったかわかりますでしょうか。

laravel011

  • ブラウザのタイトルがWinRoadからLaravel初心者講座に変更されています。次に、ナビゲーションに、Linkが追加されています。そして最後に、footerの文字が変更されています。
  • まず、タイトルですが、レイアウトテンプレートのWinRoadをhello.blade.phpの、@section(‘title’)から@stopの中で指示することで、上書きしています。つまり、レイアウトテンプレートをそのまま使用したいときは、何も記述せずに、修正したいときだけ記述すればいいと言うことです。
  • 次にナビゲーションですが、@sectionと@stopの間に@parentが記述されています。この@parentは、親すなわちレイアウトテンプレートの@sectionから@showの間のタグを継承して、その親のタグの後にLinkを追加するように指示をしているのです。
  • 最後のfooterも、タイトル同様、親テンプレートであるbase.blade.phpのBuilwingをWinRoadに変更しています。

どうですか。おもしろいですよね。いろいろなことが簡単にできそうで、わくわくしてきませんか。ワンボタンで、レイアウトを変更したり、取得したデータに応じて色々な事ができそうな気がしませんか。

皆さんも、「この機能を使用してどんな事をしようかな。」という思いを張り巡らせてください。それだけで、楽しくなってくるはずですよ。

 

« »

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です