国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

詳解Laravel視圖間共享數據與視圖Composer

2024-05-04 23:49:02
字體:
來源:轉載
供稿:網友

1、在視圖間共享數據

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

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

<?phpnamespace 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目錄下創建一個home.blade.php視圖文件,內容如下:

{{$sitename}}首頁

再創建一個hello.blade.php視圖文件:

歡迎來到{{$sitename}}!

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

2、視圖Composer

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

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

<?phpnamespace 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有所幫助。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 扬州市| 阿拉善盟| 民勤县| 内乡县| 嵩明县| 卓资县| 广德县| 榆林市| 深水埗区| 乾安县| 宣城市| 家居| 永胜县| 信丰县| 娱乐| 重庆市| 永善县| 肇州县| 盐源县| 浦江县| 天水市| 张家口市| 秦安县| 东乌| 乌拉特后旗| 文水县| 玉环县| 文昌市| 二连浩特市| 政和县| 南乐县| 铜鼓县| 信阳市| 云龙县| 登封市| 盘锦市| 咸丰县| 昌都县| 深州市| 安吉县| 新安县|