1. ホーム
  2. laravel

[解決済み] LaravelのBladeテンプレートで、レイアウトに変数を渡すには?

2022-12-06 09:26:42

質問

Laravel4で、私のコントローラはBladeレイアウトを使用しています。

class PagesController extends BaseController {
    protected $layout = 'layouts.master';
}

マスターレイアウトは変数のタイトルを出力し、ビューを表示しています。

...
<title>{{ $title }}</title>
...
@yield('content')
....

しかし、私のコントローラでは、レイアウトではなく、サブビューにしか変数を渡すことができないようです。例えば、アクションは以下のようになります。

public function index()
{
    $this->layout->content = View::make('pages/index', array('title' => 'Home page'));
}

これは $title 変数をビューのコンテンツセクションに渡すだけです。どうすればその変数をビュー全体、あるいは少なくともマスターレイアウトに提供できるでしょうか?

どのように解決するのですか?

もし、あなたが @extends を使用している場合、これを使用することができます。

@extends('master', ['title' => $title])

注意 のように、上記と同じことが子供にも効くということです。

@include('views.subView', ['my_variable' => 'my-value'])

使用方法

そして、変数が渡された場所で、次のように使用します。

<title>{{ $title ?? 'Default Title' }}</title>