欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Laravel5.5 視圖 - 創(chuàng)建視圖和數(shù)據(jù)傳遞示例

 更新時間:2019年10月21日 17:17:30   作者:lamp_yang_3533  
今天小編就為大家分享一篇Laravel5.5 視圖 - 創(chuàng)建視圖和數(shù)據(jù)傳遞示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

創(chuàng)建視圖

視圖包含應(yīng)用的 HTML 代碼,并將應(yīng)用的控制器邏輯和表現(xiàn)邏輯進(jìn)行分離。視圖文件存放在 resources/views 目錄中。下面是一個簡單的視圖示例:

<!-- resources/views/greeting.blade.php 視圖文件 -->
 
<html>
  <body>
    <h1>Hello, {{ $name }}</h1>
  </body>
</html>

可以通過輔助函數(shù) view ,返回這個視圖響應(yīng):

Route::get('/', function () {
  return view('greeting', ['name' => 'jack']);
});

view 方法的第一個參數(shù)是 resources/views 目錄下相應(yīng)的視圖文件的名稱,第二個參數(shù)是一個數(shù)組,表示傳遞給視圖文件的數(shù)據(jù)。

在這個例子中,我們傳遞了一個 name 變量,在視圖中通過使用 Blade 語法將其顯示出來。

當(dāng)然,視圖還可以存放在 resources/views 的子目錄中,用“.”號來引用子目錄中的視圖。

例如,如果視圖存放路徑是 resources/views/admin/profile.blade.php,那么我們可以這樣引用它:

return view('admin.profile', $data);

判斷視圖是否存在

如果需要判斷視圖是否存在,可調(diào)用 View 門面上的 exists 方法,如果視圖存在則返回 true:

use Illuminate\Support\Facades\View;
 
if (View::exists('emails.customer')) {
  //
}

創(chuàng)建第一個有效視圖

調(diào)用 View 門面上的 first 方法,可以用于創(chuàng)建給定視圖數(shù)組中的第一個存在的視圖:

use Illuminate\Support\Facades\View;
 
return View::first(['custom.admin', 'admin'], $data);

這個功能在應(yīng)用或擴(kuò)展包允許視圖被自定義或覆蓋時很有用。

傳遞數(shù)據(jù)到視圖

可以簡單通過數(shù)組方式將數(shù)據(jù)傳遞到視圖:

return view('greeting', ['name' => 'jack']);

除此之外,還可以通過 with 方法傳遞獨(dú)立的數(shù)據(jù)片段到視圖:

$view = view('greeting')->with('name', 'jack');

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

有時候,我們需要在所有視圖之間共享數(shù)據(jù)片段,這時可以使用視圖門面的 share 方法,通常,需要在某個服務(wù)提供者的 boot 方法中調(diào)用 share 方法,你可以將其添加到 AppServiceProvider 或生成獨(dú)立的服務(wù)提供者來存放這段代碼邏輯:

<?php
 
namespace App\Providers;
 
use View;
 
class AppServiceProvider extends ServiceProvider
{
  /**
   * 啟動所有應(yīng)用服務(wù)
   *
   * @return void
   */
  public function boot()
  {
    View::share('key', 'value');
  }
 
  /**
   * 注冊服務(wù)提供者
   *
   * @return void
   */
  public function register()
  {
    //
  }
}

視圖 Composer

視圖 Composer 是當(dāng)視圖被渲染時的回調(diào)函數(shù)或類方法。

如果你有一些數(shù)據(jù)需要在視圖每次渲染時都做綁定,可以使用視圖 Composer 將邏輯組織到一個單獨(dú)的地方。

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

<?php
 
namespace App\Providers;
 
use Illuminate\Support\Facades\View;
use Illuminate\Support\ServiceProvider;
 
class ComposerServiceProvider extends ServiceProvider
{
  /**
   * 在容器中注冊綁定.
   *
   * @return void
   */
  public function boot()
  {
    // 使用基于類方法的 composers...
    View::composer(
      'profile', 'App\Http\ViewComposers\ProfileComposer'
    );
 
    // 使用基于回調(diào)函數(shù)的 composers...
    View::composer('dashboard', function ($view) {});
  }
 
  /**
   * 注冊服務(wù)提供者.
   *
   * @return void
   */
  public function register()
  {
    //
  }
}

注:如果創(chuàng)建一個新的服務(wù)提供者來包含視圖 Composer 注冊,需要添加該服務(wù)提供者到配置文件 config/app.php 的 providers 數(shù)組中。

現(xiàn)在我們已經(jīng)注冊了視圖 Composer,每次 profile 視圖被渲染時都會執(zhí)行 ProfileComposer@compose 方法,接下來我們來定義該 Composer 類:

<?php
 
namespace App\Http\ViewComposers;
 
use Illuminate\View\View;
use Illuminate\Repositories\UserRepository;
 
class ProfileComposer
{
  /**
   * 用戶倉庫實(shí)現(xiàn).
   *
   * @var UserRepository
   */
  protected $users;
 
  /**
   * 創(chuàng)建一個新的屬性composer.
   *
   * @param UserRepository $users
   * @return void
   */
  public function __construct(UserRepository $users)
  {
    // 依賴注入通過服務(wù)容器自動解析...
    $this->users = $users;
  }
 
  /**
   * 綁定數(shù)據(jù)到視圖.
   *
   * @param View $view
   * @return void
   */
  public function compose(View $view)
  {
    $view->with('count', $this->users->count());
  }
}

視圖被渲染前,Composer 類的 compose 方法被調(diào)用,同時 Illuminate\View\View 實(shí)例被注入該方法,從而可以使用其 with 方法來綁定數(shù)據(jù)到視圖。

注:所有視圖 Composer 都通過服務(wù)容器被解析,所以你可以在 Composer 類的構(gòu)造函數(shù)中聲明任何你需要的依賴。

添加 Composer 到多個視圖

你可以傳遞視圖數(shù)組作為 composer 方法的第一個參數(shù)來一次性將視圖 Composer 添加到多個視圖:

View::composer(
  ['profile', 'dashboard'],
  'App\Http\ViewComposers\MyViewComposer'
);
composer 方法還支持 * 通配符,允許將一個 Composer 添加到所有視圖:

View::composer('*', function ($view) {
  //
});

視圖創(chuàng)建器

視圖創(chuàng)建器和視圖 Composer 非常類似,不同之處在于前者在視圖實(shí)例化之后立即失效而不是等到視圖即將渲染。

使用 View 門面的 creator 方法即可注冊一個視圖創(chuàng)建器:

View::creator('profile', 'App\Http\ViewCreators\ProfileCreator');

以上這篇Laravel5.5 視圖 - 創(chuàng)建視圖和數(shù)據(jù)傳遞示例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • ThinkPHP框架實(shí)現(xiàn)的MySQL數(shù)據(jù)庫備份功能示例

    ThinkPHP框架實(shí)現(xiàn)的MySQL數(shù)據(jù)庫備份功能示例

    這篇文章主要介紹了ThinkPHP框架實(shí)現(xiàn)的MySQL數(shù)據(jù)庫備份功能,結(jié)合實(shí)例形式分析了thinkPHP導(dǎo)出mysql數(shù)據(jù)庫相關(guān)操作實(shí)現(xiàn)與使用技巧,需要的朋友可以參考下
    2018-05-05
  • 詳解php中的password_verify?和?password_hash密碼驗(yàn)證

    詳解php中的password_verify?和?password_hash密碼驗(yàn)證

    驗(yàn)證密碼是否和指定的散列值匹配,password_verify()?與?crypt()?兼容,因此,由?crypt()?創(chuàng)建的密碼散列可以用于?password_verify()?一起使用,這篇文章主要介紹了php的password_verify?和?password_hash密碼驗(yàn)證,需要的朋友可以參考下
    2023-08-08
  • php隨機(jī)顯示圖片的簡單示例

    php隨機(jī)顯示圖片的簡單示例

    本文分享一個php實(shí)現(xiàn)的隨機(jī)顯示圖片的函數(shù),可以將指定文件夾中存放的圖片隨機(jī)地顯示出來
    2014-02-02
  • php中stream(流)的用法

    php中stream(流)的用法

    Stream是PHP開發(fā)里最容易被忽視的函數(shù)系列(SPL系列,Stream系列,pack函數(shù),封裝協(xié)議)之一,但其是個很有用也很重要的函數(shù)。Stream可以翻譯為“流”,下面是使用方法
    2014-03-03
  • ThinkPHP 框架實(shí)現(xiàn)的讀取excel導(dǎo)入數(shù)據(jù)庫操作示例

    ThinkPHP 框架實(shí)現(xiàn)的讀取excel導(dǎo)入數(shù)據(jù)庫操作示例

    這篇文章主要介紹了ThinkPHP 框架實(shí)現(xiàn)的讀取excel導(dǎo)入數(shù)據(jù)庫操作,結(jié)合實(shí)例形式分析了thinkPHP針對Excel文件的讀取、解析以及數(shù)據(jù)庫的寫入相關(guān)操作技巧,需要的朋友可以參考下
    2020-04-04
  • ajax+php控制所有后臺函數(shù)調(diào)用

    ajax+php控制所有后臺函數(shù)調(diào)用

    這篇文章主要介紹了ajax+php控制所有后臺函數(shù)調(diào)用的相關(guān)資料,需要的朋友可以參考下
    2015-07-07
  • PHP使用SOAP調(diào)用.net的WebService數(shù)據(jù)

    PHP使用SOAP調(diào)用.net的WebService數(shù)據(jù)

    需要和一個.net系統(tǒng)進(jìn)行數(shù)據(jù)交換,對方提供了一個WebService接口,使用PHP如何調(diào)用這個數(shù)據(jù)呢,下面就看看使用SOAP調(diào)用的方法吧
    2013-11-11
  • PHP實(shí)現(xiàn)多條件查詢實(shí)例代碼

    PHP實(shí)現(xiàn)多條件查詢實(shí)例代碼

    在我們的網(wǎng)站設(shè)計過程中,經(jīng)常會用到多條件查詢,本文的源碼是一個二手房屋查詢的例子。在本例中,我們要實(shí)現(xiàn)能夠通過地理位置,物業(yè)類型,房屋價格,房屋面積及信息發(fā)布日期等多個條件查詢到客戶所需的資料。
    2010-07-07
  • PHP微信開發(fā)之文本自動回復(fù)

    PHP微信開發(fā)之文本自動回復(fù)

    這篇文章主要為大家詳細(xì)介紹了PHP微信開發(fā)之簡單實(shí)現(xiàn)文本自動回復(fù)的相關(guān)資料,感興趣的小伙伴們可以參考一下
    2016-06-06
  • php對二維數(shù)組進(jìn)行排序的簡單實(shí)例

    php對二維數(shù)組進(jìn)行排序的簡單實(shí)例

    這篇文章主要介紹了php對二維數(shù)組進(jìn)行排序的簡單實(shí)例,有需要的朋友可以參考一下
    2013-12-12

最新評論