数据传递给视图,无法在布局中访问 - Laravel控制器

时间:2012-07-20 21:47:25

标签: views controllers laravel

如果我在控制器中有这个

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

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

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

那里有人可以提供帮助吗?

澄清 - 说我想将title变量传递给我的layout.main,我该怎么做呢?我上面发布的方法只允许我从index.blade.php的'content'中访问$array

2 个答案:

答案 0 :(得分:7)

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

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

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

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

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

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

这有一个名为with的方法,它为视图提供变量。

要使用它,请尝试以下方法:

$this->layout->with( 'myVariable' , $variable_to_pass_to_layout )
             ->nest('content', 'home.index', $array)

答案 1 :(得分:0)

另一种解决方案是使用

在所有视图中提供数据

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

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