Laravel 使用其他布局时正在评估主布局
Laravel Master Layout is being evaluated when using another layout
我一直在尝试在 blade 布局文件 e.i 中提供一组变量。
- layouts/master.blade.php
- layouts/admin.php
我使用的变量名为 $sitesettings->sitetitle。
我像这样输出这个变量:
<title>{{ $sitesettings->sitetitle }}</title>
此变量填充在 BaseController 中:
class BaseController extends Controller
{
public function __construct()
{
View::share('sitesettings', SiteSetting::find(1));
}
/**
* Setup the layout used by the controller.
*
* @return void
*/
protected function setupLayout()
{
if ( !is_null($this->layout))
{
$this->layout = View::make($this->layout);
}
}
}
问题出在我访问管理布局时。 master 好像是事先评估过的,出现了下面的错误。
ErrorException
Undefined variable: sitesettings (View: /home/vagrant/Code/DanielDelCore/laravel/app/views/layouts/master.blade.php) (View: /home/vagrant/Code/DanielDelCore/laravel/app/views/layouts/master.blade.php)
提前感谢您的帮助。
丹尼尔.
我不确定为什么会出现这个问题,但我建议您使用不同的方法。 View composers.
View::composer(['layouts.master', 'layouts.admin'], function($view){
$view->with('sitesettings', SiteSetting::find(1));
});
您可以将此代码放在 app/filters.php
中或创建一个新的 app/composers.php
并将其包含在 app/start/global.php
的末尾,其中:
require app_path().'/composers.php';
我一直在尝试在 blade 布局文件 e.i 中提供一组变量。
- layouts/master.blade.php
- layouts/admin.php
我使用的变量名为 $sitesettings->sitetitle。
我像这样输出这个变量:
<title>{{ $sitesettings->sitetitle }}</title>
此变量填充在 BaseController 中:
class BaseController extends Controller
{
public function __construct()
{
View::share('sitesettings', SiteSetting::find(1));
}
/**
* Setup the layout used by the controller.
*
* @return void
*/
protected function setupLayout()
{
if ( !is_null($this->layout))
{
$this->layout = View::make($this->layout);
}
}
}
问题出在我访问管理布局时。 master 好像是事先评估过的,出现了下面的错误。
ErrorException
Undefined variable: sitesettings (View: /home/vagrant/Code/DanielDelCore/laravel/app/views/layouts/master.blade.php) (View: /home/vagrant/Code/DanielDelCore/laravel/app/views/layouts/master.blade.php)
提前感谢您的帮助。
丹尼尔.
我不确定为什么会出现这个问题,但我建议您使用不同的方法。 View composers.
View::composer(['layouts.master', 'layouts.admin'], function($view){
$view->with('sitesettings', SiteSetting::find(1));
});
您可以将此代码放在 app/filters.php
中或创建一个新的 app/composers.php
并将其包含在 app/start/global.php
的末尾,其中:
require app_path().'/composers.php';