在带有 Blade 的 Laravel 4 中看不到内容视图中的变量
Posted
技术标签:
【中文标题】在带有 Blade 的 Laravel 4 中看不到内容视图中的变量【英文标题】:Can't see variable inside content view in Laravel 4 with Blade 【发布时间】:2013-11-15 06:29:01 【问题描述】:我无法理解变量在 Laravel 模板系统 Blade 中的工作方式。 我在控制器中设置了变量,我可以在我创建的第一个视图中看到它们,但在下一个视图中看不到。
我正在使用包含页眉和页脚的 master.blade.php 文件,在中间生成内容。我可以在 master.blade.php 文件中使用变量,但不能在内容刀片文件中使用(变量未定义)。
例如,对于联系页面:
控制器功能:
$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 未定义变量:数据
是我遗漏了什么还是已知的限制?
谢谢!
【问题讨论】:
【参考方案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);
通过这种方式将变量传递给布局,也传递给特定的视图。
希望对某人有所帮助。
【讨论】:
以上是关于在带有 Blade 的 Laravel 4 中看不到内容视图中的变量的主要内容,如果未能解决你的问题,请参考以下文章
Laravel - Blade:@include 一个带有自动“文件名注释”的模板
带有 Vue js 组件和 Googlebot 的 Laravel Blade 模板