使用其他布局时,正在评估Laravel Master Layout

时间:2015-01-17 10:07:36

标签: php laravel blade

我一直试图在刀片布局文件e.i中提供一组变量。

  • 布局/ master.blade.php
  • 布局/ 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);
        }
    }

}

问题是当我访问管理员布局时。主人似乎正在接受评估,并发生以下错误。

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)

提前感谢您的帮助。

丹尼尔。

1 个答案:

答案 0 :(得分:1)

我不确定为什么会出现这个问题,但我建议你使用不同的方法。 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';