如何使用Laravel的Blade模板将变量传递给布局?

14 浏览
0 Comments

如何使用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变量传递给视图的内容部分。我如何将该变量提供给整个视图,或者至少是主要布局?

0
0 Comments

在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' }}

0
0 Comments

问题的出现的原因是作者想要将一个变量传递给使用Laravel的Blade模板引擎的布局文件。作者已经尝试了使用include函数来实现这一目的,但是没有成功。作者询问如何将一个变量传递给布局文件。

解决方法是使用Laravel 5中的视图组件功能。通过使用('views.otherView', ['variable' => 1])的语法,可以将变量传递给布局文件。这样,作者就可以创建一个基于组件的应用程序了。如果只传递["one"]这个变量,可以通过在模板中使用特定的语法来获取该变量。

0
0 Comments

在Laravel的Blade模板中,如果你想要将变量传递给布局使用,可以使用以下方法:

如果你在内容布局中使用,你可以使用以下代码:

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

注意,相同的方法也适用于子视图,例如:

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

然后,在接收到变量的地方,可以像这样使用它:

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

我花了很多时间在谷歌上搜索才找到这个解决方法!这个语法是非常重要的,但文档中并没有展示所有这些细微差别。我是说,官方文档上写的是('alert', ['foo' => 'bar'])......

我正在尝试使用这种方法,但在布局页面上却出现了未定义的错误。有什么解决办法吗?

请参考使用部分(提供默认值,例如:{{ $title ?? 'My Default Title' }})。

0