[英]Configure langs in Laravel Translatable BootForms
我是Laravel Translatable BootForms的新手 ,我在想什么。
當我使用此代碼時:
{!!
TranslatableBootForm::text('Nom', 'name')
->required()
!!}
渲染如下:
我不知道該語言列表的來源。
我只想列出數據庫中指定的某些語言,就像使用此解決方法一樣:
@foreach($availableLangs as $availableLang)
{!!
TranslatableBootForm::text('Nom', 'name')
->renderLocale($availableLang['locale'])
!!}
@endforeach
這給了我這個:
我的兩個問題是:
回答第一個問題可能會自動回答第二個問題)
在Laravel中,您應該始終嘗試閱讀服務提供商,它們提供了有關項目結構的重要線索。 讓我們嘗試遵循函數調用的軌跡:
TranslatableBootForm
是一個外觀,它根據以下translatable-bootform
從服務容器解析為translatable-bootform
實例:
protected static function getFacadeAccessor() { return 'translatable-bootform'; }
現在,在文件TranslatableBootFormsServiceProvider.php
我們可以看到translatable-bootform
是TranslatableBootForm
一個實例。 因此,當您調用TranslatableBootForm::text
,將使用Facade
解析為TranslatableBootForm
的實例。
打開TranslatableBootForm
類,我們找不到text
方法,因此應該有一個__call
方法。 __call
方法始終返回從render
方法返回的內容。 這就是行動發生的地方。
在這里閱讀代碼,您會發現它是從名為locales
的方法獲取語言locales
,並將其與func_get_args()
函數相交以獲取傳遞給它的任何語言。 因此renderLocale
或簡單地render
會做同樣的事情。
方法locales
僅返回一個數組,該數組在類中默認為空。 如果我們回到TranslatableBootFormsServiceProvider
我們將看到一條重要的線:
$formBuilder->setLocales($this->getLocales());
它從Translatable\\TranslatableWrapper
獲取語言環境,而該語言只是另一個文件中該文件的包裝器: https : //github.com/dimsav/laravel-translatable/blob/master/src/Translatable/Translatable.php
查看laravel-translatable
軟件包中的配置文件,我們可以看到以下語言: https : //github.com/dimsav/laravel-translatable/blob/master/src/config/translatable.php
現在,您只需在config
文件夾中復制文件translatable.php
並設置區域設置即可。
或者,您創建一個新的服務提供程序MyTranslatableBootFormsServiceProvider
class MyTranslatableBootFormsServiceProvider extends TranslatableBootFormsServiceProvider
{
/**
* Get Translatable's locales.
*
* @return array
*/
protected function getLocales()
{
// You can return a config key
// return config('yourconfig.locales');
// Or directly the array containing the languages
return ['en', 'fr', 'nl'];
}
}
然后,您將在config/app.php
使用此提供程序,而不是原始的TranslatableBootFormsServiceProvider
免責聲明:我沒有嘗試使用代碼,您可能會遇到一個錯誤,但是現在您有了想法,可以找到如何使用Laravel軟件包的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.