8

如果我的控制器中有这个

$this->layout->nest('content', 'home.index', $array);

我只能访问$arrayhome.index.blade.php 模板文件中的数据,而不是layouts.main我正在使用的数据。

布局和视图加载正确,我只是无法从布局文件访问控制器中传递的任何数据。

有谁可以帮忙吗?

澄清 - 假设我想将一个title变量传递给我的 layout.main,我该怎么做?我上面发布的方法只允许我$array从 index.blade.php 的“内容”中访问

4

2 回答 2

9

要将数据传递给布局,请使用第一个参数作为变量的名称。

当你这样做时会发生什么:

$this->layout->nest('content', 'home.index', $array);

正在嵌套带有 $array 参数的视图 home.index。您没有创建可在布局中使用的变量。

您为布局创建的变量是 $content,它将显示传递给它的视图的内容,这是特定于 'nest' 方法的。

如果您查看 API,您会注意到控制器中声明的“布局”是以下实例:Laravel\View

这有一个方法称为with向视图提供变量。

要使用它,请尝试以下操作:

$this->layout->with( 'myVariable' , $variable_to_pass_to_layout )
             ->nest('content', 'home.index', $array)
于 2012-07-23T12:12:26.950 回答
0

另一种解决方案是使数据在您的所有视图中都可用

View::share('myVariable', $variable_to_pass_to_layout);

让任何人访问它可能很有用。

于 2014-05-16T20:02:31.060 回答