如何使用Laravel'Blade模板将variables传递给布局?
在Laravel 4中,我的控制器使用刀片布局:
class PagesController extends BaseController { protected $layout = 'layouts.master'; } 主版面输出variables标题,然后显示一个视图:
 ... <title>{{ $title }}</title> ... @yield('content') .... 
但是,在我的控制器中,我似乎只能将variables传递给子视图,而不是布局。 例如,一个行动可能是:
 public function index() { $this->layout->content = View::make('pages/index', array('title' => 'Home page')); } 
 这只会将$titlevariables传递给视图的内容部分。 我怎样才能提供这个variables到整个视图,或者至less是主布局? 
 如果您在内容布局中使用@extends ,则可以使用以下命令: 
 @extends('master', ['title' => $title]) 
我可以通过添加到我的控制器方法来解决这个问题:
  $title = 'My Title Here'; View::share('title', $title); 
$ this-> layout-> title ='主页'; 也没有工作。
对于未来使用Laravel 5的Google,您现在可以将其与includes,
 @include('views.otherView', ['variable' => 1]) 
在刀片模板中:定义一个像这样的variables
 @extends('app',['title' => 'Your Title Goes Here']) @section('content') 
并在app.blade.php或任何其他您的select(我只是遵循默认的Laravel 5设置)
 <title>{{ $title or 'Default title Information if not set explicitly' }}</title> 
这是我的第一个答案。 希望它能奏效。祝你好运!
看起来好像我可以使用布局对象上的属性将variables传递给整个布局,例如为了解决我的问题,我可以执行以下操作:
 $this->layout->title = 'Home page'; 
你可以试试:
 public function index() { return View::make('pages/index', array('title' => 'Home page')); } 
最简单的方法来解决:
 view()->share('title', 'My Title Here'); 
或使用视图Facade:
 use View; ... View::share('title', 'My Title Here'); 
 $data['title'] = $this->layout->title = 'The Home Page'; $this->layout->content = View::make('home', $data); 
到目前为止,我已经完成了这个工作,因为我需要在视图和主文件中。 看来如果你不使用$ this-> layout-> title,它将不会在主布局中可用。 改进欢迎!
 class PagesController extends BaseController { protected $layout = 'layouts.master'; } public function index() { $this->layout->title = "Home page"; $this->layout->content = View::make('pages/index'); } 
在刀片模板文件中,请记住在variables前面使用@。
 ... <title>{{ $title or '' }}</title> ... @yield('content') ...