搜尋

首頁  >  問答  >  主體

Laravel向layout視圖注入變數問題

使用的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);的結果是這樣的:

#不能用一個箭頭取集合的屬性的值?

大家讲道理大家讲道理2822 天前386

全部回覆(2)我來回復

  • 天蓬老师

    天蓬老师2017-05-16 16:52:22

    $siteInfo這是一個二維的呀,你可以使用->Array轉換成數組去取值

    回覆
    0
  • 为情所困

    为情所困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;
    

    這樣取值

    回覆
    0
  • 取消回覆