如何使用Laravel的Blade模板将变量传递给布局?
如何使用Laravel的Blade模板将变量传递给布局?
在Laravel 4中,我的控制器使用了一个Blade布局:\n
class PagesController extends BaseController { protected $layout = 'layouts.master'; }
\n主要布局输出变量标题,然后显示一个视图:\n
...{{ $title }} ... @yield('content') ....
\n然而,在我的控制器中,我似乎只能传递变量给子视图,而不能传递给布局。例如,一个操作可以是:\n
public function index() { $this->layout->content = View::make('pages/index', array('title' => 'Home page')); }
\n这只会将$title
变量传递给视图的内容部分。我如何将该变量提供给整个视图,或者至少是主要布局?
在Laravel的Blade模板中,如果想要传递一个变量给布局,可以按照以下方法进行操作:
首先,在Blade模板中定义一个变量:
('app',['title' => 'Your Title Goes Here']) ('content')
然后,在app.blade.php或者其他选择的模板文件中(我只是按照Laravel 5的默认设置进行操作):
<title>{{ $title or 'Default title Information if not set explicitly' }}</title>
这是我在这里的第一个答案。希望它能起作用。祝你好运!
这个方法帮助我节省了几个小时的时间。在Laravel 5.4中使用它效果很好。感谢答案!
我不得不这样做:{{ $title ?? 'Default Title' }}
在Laravel的Blade模板中,如果你想要将变量传递给布局使用,可以使用以下方法:
如果你在内容布局中使用,你可以使用以下代码:
('master', ['title' => $title])
注意,相同的方法也适用于子视图,例如:
('views.subView', ['my_variable' => 'my-value'])
然后,在接收到变量的地方,可以像这样使用它:
<title>{{ $title ?? 'Default Title' }}</title>
我花了很多时间在谷歌上搜索才找到这个解决方法!这个语法是非常重要的,但文档中并没有展示所有这些细微差别。我是说,官方文档上写的是('alert', ['foo' => 'bar'])
......
我正在尝试使用这种方法,但在布局页面上却出现了未定义的错误。有什么解决办法吗?
请参考使用部分(提供默认值,例如:{{ $title ?? 'My Default Title' }}
)。