Laravel向layout视图注入变量问题
大家讲道理
大家讲道理 2017-05-16 16:50:22
0
2
370

使用的laravel 5.3,要给共用的layout视图app.blade.php注入一些变量,

AppServiceProvider.php文件的boot()方法中添加了如下代码:

    public function boot()
    {
        view()->composer('layouts/app', function ($view) {
            $siteInfo=SiteInfo::all();
            dd($siteInfo);
            $view->with('siteName',$siteInfo->name)   // 这是line 22
                ->with('siteKeywords',$siteInfo->keywords)
                ->with('siteDescription',$siteInfo->description);
        });
    }

出现如下错误:

    ErrorException in AppServiceProvider.php line 22:
    Undefined property: Illuminate\Database\Eloquent\Collection::$name (View: D:\wnmp\www\laravel-5-3-dev\resources\views\pages\index.blade.php)

22行的位置在AppServiceProvider.php有注释。

dd($siteInfo);的结果是这样的:

不能用一个箭头取集合的属性的值?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(2)
Peter_Zhu

$siteInfo这是一个二维的呀,你可以使用->Array转换成数组去取值

为情所困

显然不对,假设你的siteinfo表设计如下
id guid, name varchar(60), value varchar(60)
对于网站key_word,你应该取name字段为keyword的记录的value字段的值

所以你需要

$siteinfo = SiteInfo::all();
$siteinfo->where('name', 'key_word')->value;

这样取值

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板