W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
視圖合成器是在呈現(xiàn)視圖時(shí)調(diào)用的回調(diào)或類方法。如果希望每次呈現(xiàn)視圖時(shí)將數(shù)據(jù)自動(dòng)綁定到視圖中,則視圖合成器可以幫助您將這些邏輯組織到一起:
默認(rèn)情況下,Laravel
沒有存放視圖合成器的目錄,您可以根據(jù)需要來(lái)重新建立目錄。例如: app/Http/View/Composers
。在下面這個(gè)例子中,我們會(huì)在一個(gè) service provider 中注冊(cè)視圖合成器。 使用 View
門面(Facade)來(lái)實(shí)現(xiàn)訪問底層的 Illuminate\Contracts\View\Factory
契約:
<?php
namespace App\Providers;
use Illuminate\Support\Facades\View;
use Illuminate\Support\ServiceProvider;
class ViewServiceProvider extends ServiceProvider
{
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
// Using class based composers...
View::composer(
'profile', 'App\Http\View\Composers\ProfileComposer'
);
// Using Closure based composers...
View::composer('dashboard', function ($view) {
//
});
}
}
注意:記住,如果你創(chuàng)建了新的一個(gè)服務(wù)提供者來(lái)存放你注冊(cè)視圖合成器的代碼,那么你需要將這個(gè)服務(wù)提供器添加到配置文件
config/app.php
的providers
數(shù)組中。
現(xiàn)在我們注冊(cè)了視圖合成器,每次渲染 profile
視圖時(shí)都會(huì)執(zhí)行 ProfileComposer@compose
方法。那么下面我們來(lái)定義視圖合成器的這個(gè)類吧:
<?php
namespace App\Http\View\Composers;
use App\Repositories\UserRepository;
use Illuminate\View\View;
class ProfileComposer
{
/**
* The user repository implementation.
*
* @var UserRepository
*/
protected $users;
/**
* Create a new profile composer.
*
* @param UserRepository $users
* @return void
*/
public function __construct(UserRepository $users)
{
// Dependencies automatically resolved by service container...
$this->users = $users;
}
/**
* Bind data to the view.
*
* @param View $view
* @return void
*/
public function compose(View $view)
{
$view->with('count', $this->users->count());
}
}
視圖合成器的 compose
方法會(huì)在視圖渲染之前被調(diào)用,并傳入一個(gè) Illuminate\View\View
實(shí)例。你可以使用 with
方法將數(shù)據(jù)綁定到視圖。
技巧:所有的視圖合成器都會(huì)通過 服務(wù)容器 進(jìn)行解析,所以你可以在視圖合成器的構(gòu)造函數(shù)中類型提示需要注入的依賴項(xiàng)。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: