使用的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);
的結果是這樣的:
#不能用一個箭頭取集合的屬性的值?
为情所困2017-05-16 16:52:22
顯然不對,假設你的siteinfo表設計如下
id guid, name varchar(60), value varchar(60)
對於網站key_word,你應該取name欄位為keyword的記錄的value欄位的值
所以你需要
$siteinfo = SiteInfo::all();
$siteinfo->where('name', 'key_word')->value;
這樣取值