gpt4 book ai didi

laravel - 如何将数据注入(inject)布局?

转载 作者:行者123 更新时间:2023-12-02 03:46:59 27 4
gpt4 key购买 nike

我正在尝试将数据注入(inject)布局(不是 subview ),但我还没有找到任何看起来实用的方法。

这是我目前知道的两种方法来实现这一点。为简单起见,我将注入(inject)的数据是页面标题。

方法一

// app/controllers/HomeController.php

protected $layout = 'main';

public function index()
{
$this->layout->title = 'Page Title';
$this->layout->content = View::make('home');
}


// app/views/layout.blade.php
...
<title>{{ $title }}</title>
...

方法二
// app/views/home.blade.php
...
@section('title')
Page Title
@stop
...


// app/views/layout.blade.php

...
<title>@yield('title')</title>
...

再一次,这些方法似乎都不理想,但到目前为止我还没有看到更好的方法。我觉得 Laravel 必须有一些内置的方法来处理这个......

最佳答案

您可以编辑 BaseController 中的 setupLayout 方法以将数据直接传递给 View::make 调用。

protected function setupLayout()
{
if(!is_null($this->layout))
{
$data = array(
'title' => 'Page Title'
);

$this->layout = View::make($this->layout, $data);
}
}

或者,您可以更改 setupLayout 方法以访问 $this->layoutData:
protected function setupLayout()
{
if(!is_null($this->layout))
{
$this->layout = View::make($this->layout, $this->layoutData);
}
}

然后在您的实际 Controller 中设置以下内容:
$this->layoutData = array('title' => 'Page Title');

关于laravel - 如何将数据注入(inject)布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16311134/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com