W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
您擴(kuò)展包內(nèi)部的架構(gòu)全部由您自己規(guī)劃。然而,原則上會有一個或更多的 服務(wù)提供者. 服務(wù)提供者包含著所有的 服務(wù)容器 綁定,也定義了所有您擴(kuò)展包的相關(guān)配置、視圖以及語言文件在什么地方。
擴(kuò)展包的視圖基本上使用兩個雙冒號來指定:
return view('package::view.name');
所有您所要做的只有告訴 Laravel 您所配置擴(kuò)展包名稱視圖的位置在哪里。如果您的擴(kuò)展包取名為 “courier” 您可能需要添加如下到您的服務(wù)提供者的 boot 方法:
public function boot()
{
$this->loadViewsFrom(__DIR__.'/path/to/views', 'courier');
}
現(xiàn)在您可以使用如下的語法來加載擴(kuò)展包的視圖:
return view('courier::view.name');
當(dāng)您使用 loadViewsFrom 方法,Laravel 實(shí)際上為了您的視圖注冊了兩個位置。一個是您應(yīng)用程序的 resources/views/vendor 目錄,一個是您指定的目錄。所以使用我們的例子 courier 當(dāng)要求一個擴(kuò)展包的視圖時,Laravel 會第一時間檢查是否有一個開發(fā)者自行自定義在 resources/views/vendor/courier 的視圖存在。然而如果還沒有這個路徑的視圖被自定義。Laravel 會搜索您在擴(kuò)展包 loadViewsFrom 方法里所指定的視圖。這個方法讓個別的用戶可以方便的自定義且覆寫您在擴(kuò)展包里的視圖。
發(fā)布擴(kuò)展包的視圖到 resources/views/vendor 目錄,您必須在服務(wù)提供者里的 boot 方法里使用 publishes 方法:
public function boot()
{
$this->loadViewsFrom(__DIR__.'/path/to/views', 'courier');
$this->publishes([
__DIR__.'/path/to/views' => base_path('resources/views/vendor/courier'),
]);
}
現(xiàn)在當(dāng)您擴(kuò)展包的用戶使用 Laravel 的命令 vendor:publish 您的視圖目錄將會被復(fù)制到所特定的目錄
如果您想要覆寫已存在的文件,可以使用 --force:
php artisan vendor:publish --force
注意: 您可以使用 publishes 方法,發(fā)布任何您的文件到任何您想要的地方。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: