首頁  >  文章  >  php框架  >  laravel5.5框架中視圖間如何共享資料?視圖間共享資料的兩種方法(附程式碼)

laravel5.5框架中視圖間如何共享資料?視圖間共享資料的兩種方法(附程式碼)

不言
不言原創
2018-08-02 14:11:393358瀏覽

laravel框架中視圖間共享資料有兩種,一種是用視圖門面share()方法實現,另一種是用視圖門面composer() 方法實現,那麼,兩種方法的實現究竟是怎麼樣的呢?讓我們來看看接下來的文章內容。

首先,需要注意的一點是:都是使用View 門面來存取Illuminate\Contracts\View\Factory 的底層實作

視圖門面share()方法

有時需要在所有視圖之間共用資料片段,這時候可以使用視圖門面的share 方法。

1,一般情況下,我會在app\http\Controllers\xx下建立一個基礎控制器 BaseController.php,

ac924c01a08f6900d864ce13cf1f9067initViewShare();    //视图共享数据
    }
    /**
     *  视图共享数据方法
     */
    public function initViewShare()
    {
        view()->share('action_name',get_action_name()); //当前URL的方法器名
     }
}


//视图使用 
//共享视图一般都是在layout中
{{ $action_name }}

get_action_name() 是自訂的函數。

tips:
建立app\Helpers\ExtmanFun.php ,composer.json的autoload 引入

 "files":[
     "app/Helpers/ExtmanFun.php"
 ]

執行composer dump-autoload 會自動載入

2,在AppServiceProvider 服務提供者(或新建提供者) 的boot方法中呼叫share()

da2d57d3bdb10de22b42a0069dfc7eb3share('name','共享数据片段');
    }
}

檢視門面composer()方法

視圖合成器是當視圖被渲染時的回呼函數或類別方法,如果你每次渲染視圖時都要綁定視圖的數據,例如使用者登陸資訊。可以使用composer() 將邏輯組織到一個單獨的地方。
本例中,我們將在AppServiceProvider服務提供者中註冊視圖合成器,
提供者程式碼如下:

cc1a47858451ba5ff0ab8b6b1b5c5200composer(
            //'*', 'App\Http\ViewComposers\AuthComposer'
            //['extman.home, welcome'], 'App\Http\ViewComposers\AuthComposer'
            ['extman.*'], 'App\Http\ViewComposers\AuthComposer'
        );

        //使用基于回调函数
        view()->composer('*',function($view){
            $view->with('user',array('name'=>'test','avatar'=>'/path/to/test.jpg'));
        });
    }
other code
}

如果建立一個新的服務提供者來包含視圖composer 註冊,需要新增此服務提供者到設定檔config/app.php 的providers 陣列中

到此已經註冊了視圖合成器,每次渲染extman目錄下所有視圖時都會執行AuthComposer@compose 方法。
定義視圖合成器類別App\Http\ViewComposers\AuthComposer.php

01c01bc34336503a6e00eaa6a82e83a6users = $users;
    }

    //绑定数据到视图
    public function compose(View $view)
    {
        $user_info = \Auth::user();
        $view->with('motto', $user_info);
        $view->with('count', $this->users->count());
    }
}

視圖被渲染前,AuthComposer類別的compose 方法被調用,同時Illuminate\View\View 實例被注入該方法,從而可以使用其with 方法來綁定資料到視圖。

所有的視圖合成器都會透過 服務容器 來解析,所以你可以在視圖合成器的建構函式中型別提示需要注入的依賴項。

相關文章推薦:

詳解Laravel視圖間共享資料與視圖Composer_php實例

Laravel 5框架學習之向視圖傳送數據,laravel框架

以上是laravel5.5框架中視圖間如何共享資料?視圖間共享資料的兩種方法(附程式碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn