濮阳杆衣贸易有限公司

主頁 > 知識庫 > Laravel5.4框架中視圖共享數(shù)據(jù)的方法詳解

Laravel5.4框架中視圖共享數(shù)據(jù)的方法詳解

熱門標簽:高德地圖標注家 長春人工外呼系統(tǒng)服務商 外呼系統(tǒng)撥打暫時無法接通 哪里辦理400電話 怎么向銷售公司推銷外呼系統(tǒng) 江西手機自動外呼防封系統(tǒng)是什么 廣東地市地圖標注 廣州防封卡外呼系統(tǒng)多少錢一個月 仁和怎么申請400開頭的電話

本文實例講述了Laravel5.4框架中視圖共享數(shù)據(jù)的方法。分享給大家供大家參考,具體如下:

每個人都會遇到這種情況:某些數(shù)據(jù)還在每個頁面進行使用,比如用戶信息,或者菜單數(shù)據(jù),最基本的做法是在每個視圖空控制器中傳入這些數(shù)據(jù),但顯然并不是我們想要的結果。另一種方法就是使用視圖數(shù)據(jù)共享,視圖數(shù)據(jù)共享的基本使用很簡單,可查看視圖文檔了解詳情,這里我們演示兩個使用示例:在視圖間共享數(shù)據(jù)和視圖Composer

在視圖中共享數(shù)據(jù)

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

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

?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
  /**
   * Bootstrap any application services.
   *
   * @return void
   */
  public function boot()
  {
    //視圖間共享數(shù)據(jù)
    view()->share('name','高偉');
  }
  /**
   * Register any application services.
   *
   * @return void
   */
  public function register()
  {
    //
  }
}

接下來我直接用一個空的Laravel項目做演示,我們在 routes 文件首頁(welcome.blade.php)視圖:

Route::get('/', function () {
  return view('welcome');
});

然后在視圖中輸出視圖共享數(shù)據(jù):

!DOCTYPE html>
html>
  head>
    title>Laravel/title>
    style>
      html, body {
        height: 100%;
      }
      body {
        margin: 0;
        padding: 0;
        width: 100%;
        display: table;
        font-weight: 100;
        font-family: 'Lato';
      }
      .container {
        text-align: center;
        display: table-cell;
        vertical-align: middle;
      }
      .content {
        text-align: center;
        display: inline-block;
      }
      .title {
        font-size: 96px;
      }
    /style>
  /head>
  body>
    div class="container">
      div class="content">
        div class="title">Laravel 5/div>
        h1>hello,{{$name}}/h1>
      /div>
    /div>
  /body>
/html>

視圖Composer

上面的一種做法雖然可行,但是在別人下載項目后,共享數(shù)據(jù)是從數(shù)據(jù)庫中獲取的,執(zhí)行數(shù)據(jù)遷移的時候會報錯。這時候我們就要用到視圖Composer,視圖Composer通過視圖工廠的composer方法實現(xiàn)。該方法的第二個回調參數(shù)支持基于控制器動作和閉包函數(shù)兩種方式。

控制器的動作方式

首先要在服務提供者中注冊視圖 Composer,我們將會使用輔助函數(shù) view 來訪問 Illuminate\Contracts\View\Factory 的底層實現(xiàn),記住,Laravel 不會包含默認的視圖 Composer 目錄,我們可以按照自己的喜好組織其路徑,例如可以創(chuàng)建一個 App\Http\ViewComposers 目錄:

?php
namespace App\Http\ViewComposers;
use Illuminate\Contracts\View\View;
/**
* 基于類的實現(xiàn)方式
*/
class MottoComposer
{
  /**
   * 共享數(shù)據(jù)
   * @date  2018-01-13
   * @author 高偉
   * @param View    $view [description]
   * @return [type]      [description]
   */
  public function compose(View $view)
  {
    $view->with('motto', '嘎嘎嘎,我一直在努力!');
  }
}

然后我們在 AppServiceProvider 中繼續(xù)添加共享數(shù)據(jù):

?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
  /**
   * Bootstrap any application services.
   *
   * @return void
   */
  public function boot()
  {
    view()->share('name','高偉');
    // 使用基于類的composers...第一個參數(shù)可以指定共享給那個視圖,多個視圖用數(shù)組,共享到全部視圖可以用 *
    view()->composer(
      'welcome', 'App\Http\ViewComposers\MottoComposer'
    );
  }
  /**
   * Register any application services.
   *
   * @return void
   */
  public function register()
  {
    //
  }
}

在視圖中顯示共享數(shù)據(jù):

...
div class="content">
 div class="title">Laravel 5/div>
 h1>hello,{{$name}}/h1>
 p>{{$motto}}/p>
/div>
...

閉包實現(xiàn)方式

閉包的實現(xiàn)方式相對來說簡單很多,這里就簡單貼書代碼:

?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
  /**
   * Bootstrap any application services.
   *
   * @return void
   */
  public function boot()
  {
    view()->share('name','高偉');
    // 使用基于類的composers...
    view()->composer(
      'welcome', 'App\Http\ViewComposers\MottoComposer'
    );
    // 閉包實現(xiàn)方式
    view()->composer('*',function($view)
    {
      $view->with('info','http://www.iwanli.me');
    });
  }
  /**
   * Register any application services.
   *
   * @return void
   */
  public function register()
  {
    //
  }
}

視圖中顯示數(shù)據(jù):

...
div class="content">
 div class="title">Laravel 5/div>
 h1>hello,{{$name}}/h1>
 p>{{$motto}}/p>
 p>{{$info}}/p>
/div>
...

更多關于Laravel相關內容感興趣的讀者可查看本站專題:《Laravel框架入門與進階教程》、《php優(yōu)秀開發(fā)框架總結》、《php面向對象程序設計入門教程》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》

希望本文所述對大家基于Laravel框架的PHP程序設計有所幫助。

您可能感興趣的文章:
  • laravel框架模型、視圖與控制器簡單操作示例
  • Laravel 5框架學習之模型、控制器、視圖基礎流程
  • Laravel 5框架學習之路由、控制器和視圖簡介
  • laravel通過a標簽從視圖向控制器實現(xiàn)傳值
  • 跟我學Laravel之視圖 & Response
  • Laravel 5框架學習之向視圖傳送數(shù)據(jù)
  • Laravel 5框架學習之子視圖和表單復用
  • Laravel框架學習筆記(二)項目實戰(zhàn)之模型(Models)
  • Laravel模型事件的實現(xiàn)原理詳解
  • Laravel框架控制器,視圖及模型操作圖文詳解

標簽:海北 梅河口 文山 惠州 黔東 湘西 濮陽 廈門

巨人網(wǎng)絡通訊聲明:本文標題《Laravel5.4框架中視圖共享數(shù)據(jù)的方法詳解》,本文關鍵詞  Laravel5.4,框架,中,視圖,共享,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Laravel5.4框架中視圖共享數(shù)據(jù)的方法詳解》相關的同類信息!
  • 本頁收集關于Laravel5.4框架中視圖共享數(shù)據(jù)的方法詳解的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    望江县| 定日县| 康乐县| 永福县| 莱西市| 潮安县| 资阳市| 陇南市| 安化县| 镶黄旗| 镇原县| 察哈| 巴东县| 澄城县| 贵阳市| 全南县| 克东县| 彩票| 百色市| 汕尾市| 壶关县| 汝城县| 舞钢市| 潞城市| 呼伦贝尔市| 仙桃市| 滁州市| 土默特左旗| 汶上县| 威海市| 盐城市| 延津县| 马鞍山市| 合山市| 黎平县| 聂荣县| 电白县| 东平县| 阳朔县| 旺苍县| 上杭县|