Laravel檢視共享資料
阿新 • • 發佈:2019-01-02
Laravel檢視共享資料
最近在用lavavel過程中想實現公共頭部尾部需要的配置資料在所有的頁面中都可以使用,便查看了官方文件,在此做一個總結:
一. 修改 ComposerServiceProvider 服務
在app/Providers目錄下面找到ComposerServiceProvider.php 檔案,將其修改成如下面類似:
<?php namespace App\Providers; use Illuminate\Support\ServiceProvider; class ComposerServiceProvider extendsServiceProvider { /** * Bootstrap the application services. * * @return void */ public function boot() { view()->composer( 'home.*', 'App\Http\ViewComposers\BaseInfoComposer' ); } /** * Register the application services. * * @return void*/ public function register() { // } }
注意:composer的第一個引數是需要公用資料的試圖問題,我這邊是home下的所有檔案,第二個引數是具體要執行的檔案。
二 . 處理資料獲取並渲染
建立App\Http\ViewComposers\BaseInfoComposer.php 這個檔案,將其修改成如下面類似:
<?php namespace App\Http\ViewComposers; use Illuminate\View\View; use App\Http\Models\Backend\Nav;use App\Http\Models\Backend\Config; class BaseInfoComposer { /** * 將資料繫結到檢視。 * * @param View $view * @return void */ public function compose(View $view) { $view->with([ 'nav'=>Nav::where('is_delete',1)->orderBy('sort','desc')->get(), 'base'=>json_decode(Config::where('name','基本配置')->value('configs'),true), 'other'=>json_decode(Config::where('name','其它配置')->value('configs'),true), ]); } }
三. 註冊服務
在config/app.php
檔案下的providers
陣列中進行註冊:
App\Providers\ComposerServiceProvider::class,
再在頁面中就都可以呼叫了