如果我在控制器中有这个
$this->layout->nest('content', 'home.index', $array);
我只能访问home.index.blade.php模板文件中$array
内的数据,而不能访问我正在使用的layouts.main
中的数据。
布局&视图加载正确,我只是无法从布局文件中访问控制器中传递的任何数据。
那里有人可以提供帮助吗?
澄清 - 说我想将title
变量传递给我的layout.main,我该怎么做呢?我上面发布的方法只允许我从index.blade.php的'content'中访问$array
答案 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);
让任何人访问它都可能很有用。