我很难理解变量在Laravel模板系统Blade中的工作原理。 我在控制器中设置变量,我可以在我制作的第一个视图中看到它们,但不能在下一个视图中看到它们。
我正在使用一个master.blade.php文件,该文件包含页面的页眉和页脚,在中间产生内容。我可以在master.blade.php文件中使用该变量,但不能在内容刀片文件中使用(变量undefined)。
例如,对于联系页面:
控制器功能:
$ this-> data ['page'] =“contact”;
$ this-> layout-> content = View :: make('pages.contact');
$ this-> layout-> with('data',$ this-> data);
MASTER.BLADE.PHP:
if($ data ['page'] =='contact')
{//做点什么,有效}
@yield( '内容')
CONTACT.BLADE.PHP:
if($ data ['page'] =='contact')
{//做点什么。 ErrorException未定义的变量:data}
我错过了什么或者这是一个已知的限制吗?
谢谢!
答案 0 :(得分:1)
问题是我只将变量传递给布局:
而不是:
$ this-> layout-> content = View :: make('pages.contact');
$ this-> layout-> with('data',$ this-> data);
我使用以下方法修复了它:
$ this-> layout-> content = View :: make('pages.contact',array('data'=> $ this-> data));
$ this-> layout-> with('data',$ this-> data);
这样就可以将变量传递给布局,也可以传递给特定的视图。
希望它有所帮助。