Laravel 4.2 テンプレート

コントローラーレイアウト

Laravelのテンプレートを使用する一つの方法は、コントローラーのレイアウトで指定する方法です。layoutプロパティーをコントローラーで指定すれば、指定されたビューが生成され、アクションからレスポンスが自動的にリターンされます。

コントローラーでレイアウトを宣言する

class UserController extends BaseController {

    /**
     * レスポンスで必ず使用するレイアウト
     */
    protected $layout = 'layouts.master';

    /**
     * ユーザープロファイル表示
     */
    public function showProfile()
    {
        $this->layout->content = View::make('user.profile');
    }

}

Bladeテンプレート

Bladeはシンプルですが、パワフルなLaravelのテンプレートエンジンです。コントローラーレイアウトと違い、Bladeはテンプレートの継承セクションにより扱われます。全てのBladeテンプレートには.blade.php拡張子が付きます。

Bladeレイアウトを定義する

<!-- app/views/layouts/master.blade.phpとして保存 -->

<html>
    <body>
        @section('sidebar')
            ここは親のサイドバー
        @show

        <div class="container">
            @yield('content')
        </div>
    </body>
</html>

Bladeレイアウトを使用する

@extends('layouts.master')

@section('sidebar')
    @parent

    <p>ここは親のサイドバーに追加される</p>
@stop

@section('content')
    <p>ここは本文のコンテンツ</p>
@stop

Bladeレイアウトを「拡張」するには、ただレイアウトのセクションをオーバーライドするだけです。子のビューで親のコンテンツをインクルードするには@parentディレクティブをセクションで使用します。サイドバーやフッターでレイアウトのコンテンツを追加する場合などに便利です。

セクションを定義するべきか迷うこともあります。そんな場合は、デフォルト値を@yieldに直接指定できます。2つめのパラメーターで、デフォルト値を指定してください。

@yield('section', 'Default Content')

その他のBlade制御構文

データーをechoする

こんにちは、{{{ $name }}}.

只今のUNIXタイムスタンプは: {{{ time() }}}.

存在を確認した後でデーターをechoする

時々、セットされてるかわからない変数をechoしたい場合があります。基本的に、このように実現できます。

{{{ isset($name) ? $name : 'Default' }}}

三項演算子を書く代わりに、Bladeでは次のような短縮形を使用することができます。

{{{ $name or 'Default' }}}

波括弧をそのまま出力する

カギカッコで囲まれた文字列をそのまま出力する必要がある場合には、@を先頭に付けることで、Bladeの処理をエスケープすることができます。

@{{ ここはBladeで処理されません }}

もちろん、ユーザーから提示されたデータはエスケープするか、クリーンアップしましょう。出力をエスケープしたい場合は、三重の波括弧を使用してください。

こんにちは、{{{ $name }}}.

データーをエスケープしたくない場合は、二重の波括弧を使用してください。

こんにちは、{{ $name }}.

注意:アプリケーションのユーザーから提供されたコンテンツを出力する時は注意を払ってください。三重の波括弧を使用すると、コンテンツ中のHTMLエンティティーは、いつでもエスケープされます。

If文

@if (count($records) === 1)
    I have one record!
@elseif (count($records) > 1)
    I have multiple records!
@else
    レコードがなかった!
@endif

@unless (Auth::check())
    あなたはログインしていません。
@endunless

ループ

@for ($i = 0; $i < 10; $i++)
    The current value is {{ $i }}
@endfor

@foreach ($users as $user)
    <p>これはユーザーID: {{ $user->id }}</p>
@endforeach

@forelse($users as $user)
    <li>{{ $user->name }}</li>
@empty
    <p>ユーザーなし</p>
@endforelse

@while (true)
    <p>永久にループ中</p>
@endwhile

サブビューをインクルードする

@include('view.name')

読み込むビューにデーターの配列を渡すことも可能です。

@include('view.name', array('some'=>'data'))

セクションのオーバーライド

セクション全体を書き換えるには、overwrite文を使用してください。

@extends('list.item.container')

@section('list.item.content')
    <p>これは{{ $item->type }}タイプのアイテムです。</p>
@overwrite

多言語に対応済みの行表示

@lang('language.line')

@choice('language.line', 1)

コメント

{{-- これはコメントで、HTMLとしてレンダーされません --}}

Bladeの拡張

Bladeでは、皆さん独自のカスタム記述法を定義することもできます。Bladeファイルがコンパイルされるとき、各カスタム記法定義がビューの内容で呼び出され、簡単なstr_replaceでの置き換えから、複雑な正規表現による置換まで、実行することができます。

Bladeコンパイラには独自ディレクティブを定義するために必要なコードの生成を行う、createMatchercreatePlainMatcherヘルパメソッドが用意されています。

createPlainMatcherメソッドは引数を取らない、@endif@stopのようなディレクティブに使用し、一方のcreateMatcherは引数と一緒に使用します。

@datetime($var)により、シンプルに$var->format()で呼び出すディレクティブの例を以下で紹介します。

Blade::extend(function($view, $compiler)
{
    $pattern = $compiler->createMatcher('datetime');

    return preg_replace($pattern, '$1<?php echo $2->format(\'m/d/Y H:i\'); ?>', $view);
});

ドキュメント章別ページ

Artisan CLI

ヘッダー項目移動

注目:アイコン:ページ内リンク設置(リンクがないヘッダーへの移動では、リンクがある以前のヘッダーのハッシュをURLへ付加します。

移動

クリックで即時移動します。

バージョン

設定

適用ボタンクリック後に、全項目まとめて適用されます。

カラーテーマ
和文指定 Pagination
和文指定 Scaffold
Largeスクリーン表示幅
インデント
本文フォント
コードフォント
フォント適用確認

フォントの指定フィールドから、フォーカスが外れると、当ブロックの内容に反映されます。EnglishのDisplayもPreviewしてください。

フォント設定時、表示に不具合が出た場合、当サイトのクッキーを削除してください。

バックスラッシュを含むインライン\Code\Blockの例です。

以下はコードブロックの例です。

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    /**
     * ユーザに関連する電話レコードを取得
     */
    public function phone()
    {
        return $this->hasOne('App\Phone');
    }
}

設定を保存する前に、表示が乱れないか必ず確認してください。CSSによるフォントファミリー指定の知識がない場合は、フォントを変更しないほうが良いでしょう。

キーボード・ショートカット

オープン操作

PDC

ページ(章)移動の左オフキャンバスオープン

HA

ヘッダー移動モーダルオープン

MS

移動/設定の右オフキャンバスオープン

ヘッダー移動

T

最初のヘッダーへ移動

E

最後のヘッダーへ移動

NJ

次ヘッダー(H2〜H4)へ移動

BK

前ヘッダー(H2〜H4)へ移動

その他

?

このヘルプページ表示
閉じる