国产综合精品在线,精品一区国产精品,中文在线欧美日韩视频,中文字幕制服亚洲另类

<dfn id="ykamo"><pre id="ykamo"></pre></dfn>
  • <rt id="ykamo"><code id="ykamo"></code></rt>
  • <strike id="ykamo"></strike>
    詳解Laravel視圖間共享數據與視圖Composer
    來源:易賢網 閱讀:898 次 日期:2016-08-29 14:12:47
    溫馨提示:易賢網小編為您整理了“詳解Laravel視圖間共享數據與視圖Composer”,方便廣大網友查閱!

    1、在視圖間共享數據

    除了在單個視圖中傳遞指定數據之外,有時候需要在所有視圖中傳入同一數據,即我們需要在不同視圖中共享數據。要實現這一目的,需要使用視圖工廠的share方法。

    全局幫助函數view和response類似,如果傳入參數,則返回Illuminate\View\View實例,不傳入參數則返回Illuminate\View\Factory實例。所以我們可以通過在服務提供者的boot方法中使用如下方式實現視圖間共享數據:

    <?php

    namespace App\Providers;

    use Illuminate\Support\ServiceProvider;

    class AppServiceProvider extends ServiceProvider

    {

      /**

       * Bootstrap any application services.

       *

       * @return void

       */

      public function boot()

      {

        //視圖間共享數據

        view()->share('sitename','Laravel學院');

      }

      /**

       * Register any application services.

       *

       * @return void

       */

      public function register()

      {

        //

      }

    }

    我們在routes.php中定義兩個路由:

    Route::get('testViewHello',function(){

      return view('hello');

    });

    Route::get('testViewHome',function(){

      return view('home');

    });

    然后在resources/views目錄下創(chuàng)建一個home.blade.php視圖文件,內容如下:

    {{$sitename}}首頁

    再創(chuàng)建一個hello.blade.php視圖文件:

    歡迎來到{{$sitename}}!

    在瀏覽器中分別訪問http://laravel.app:8000/testViewHello和http://laravel.app:8000/testViewHome,則都能解析出$sitename的值。

    2、視圖Composer

    有時候我們想要在每次視圖渲染時綁定一些特定數據到視圖中,比如登錄用戶信息,這時候我們就要用到視圖Composer,視圖Composer通過視圖工廠的composer方法實現。該方法的第二個回調參數支持基于控制器動作和閉包函數兩種方式。

    簡單起見,我們還是基于AppServiceProvider,不去單獨創(chuàng)建服務提供者,這里我們傳遞閉包參數(控制器動作參考視圖文檔):

    <?php

    namespace App\Providers;

    use Illuminate\Support\ServiceProvider;

    class AppServiceProvider extends ServiceProvider

    {

      /**

       * Bootstrap any application services.

       *

       * @return void

       */

      public function boot()

      {

        //視圖間共享數據

        view()->share('sitename','Laravel學院');

        //視圖Composer

        view()->composer('hello',function($view){

          $view->with('user',array('name'=>'test','avatar'=>'/path/to/test.jpg'));

        });

      }

      /**

       * Register any application services.

       *

       * @return void

       */

      public function register()

      {

        //

      }

    }

    修改hello.blade.php視圖文件:

    歡迎來到{{$sitename}}!

    <h3>用戶信息</h3>

    用戶名:{{$user['name']}}<br>

    用戶頭像:{{$user['avatar']}}

    在瀏覽器中訪問http://laravel.app:8000/testViewHello,輸出內容如下:

    歡迎來到Laravel學院!

    用戶信息

    用戶名:test

    用戶頭像:/path/to/test.jpg

    你也可以傳遞數據到多個視圖:

    view()->composer(['hello','home'],function($view){

      $view->with('user',array('name'=>'test','avatar'=>'/path/to/test.jpg'));

    });

    甚至所有視圖(使用通配符*):

    view()->composer('*',function($view){

      $view->with('user',array('name'=>'test','avatar'=>'/path/to/test.jpg'));

    });

    以上就是Laravel視圖間共享數據及視圖Composer的詳細內容,希望本文對大家學習Laravel有所幫助。

    更多信息請查看網絡編程

    2025國考·省考課程試聽報名

    • 報班類型
    • 姓名
    • 手機號
    • 驗證碼
    關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 加入群交流 | 手機站點 | 投訴建議
    工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
    聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
    咨詢QQ:526150442(9:00—18:00)版權所有:易賢網