fienta / laravel-translatable-bootforms
为adamwathan/bootforms提供dimsav/laravel-translatable的功能。
Requires
- php: >=5.5.9
- astrotomic/laravel-translatable: >=8.0
- galahad/bootforms: ^1.2.0
- illuminate/support: >=5.5
Requires (Dev)
- orchestra/testbench: >=3.0
- phpunit/phpunit: >=4.0
This package is auto-updated.
Last update: 2024-09-13 16:11:02 UTC
README
让BootForms与Laravel Translatable完美协同工作!
通过导入此包,使用BootForms生成可翻译表单变得轻而易举。
安装
-
运行Composer require命令安装包
composer require fienta/laravel-translatable-bootforms
-
在应用配置中,在
$providers
数组中添加Service Provider,在BootFormsServiceProvider
和TranslatableServiceProvider
之后'providers' => [ Galahad\BootForms\BootFormsServiceProvider::class, Astrotomic\Translatable\TranslatableServiceProvider::class, ... TypiCMS\LaravelTranslatableBootForms\TranslatableBootFormsServiceProvider::class, ],
-
在应用配置中,在
$aliases
数组中添加Facade'aliases' => [ ... 'TranslatableBootForm' => Propaganistas\LaravelTranslatableBootForms\Facades\TranslatableBootForm::class, ],
-
发布配置文件
php artisan vendor:publish --provider="TypiCMS\LaravelTranslatableBootForms\TranslatableBootFormsServiceProvider" --tag="config"
使用方法
只需像使用BootForm
一样使用TranslatableBootForm
Facade即可!就是这样。现在将为Translatable配置文件中设置的本地化生成多个表单输入。它们将具有每种语言的对应值,并且将保存所有翻译,而无需任何代码操作。
如果您不确定如何使用BootForms,请查看BootForms文档。
示例
// View {!! BootForm::text('Name', 'name') ->placeholder('My placeholder') !!} // Output <div class="form-group"> <label for="name">Name</label> <input type="text" name="name" class="form-control" placeholder="My Placeholder" /> </div> // Controller public function postEdit($request) { $someModel->save($request->all()); }
// View {!! TranslatableBootForm::text('Name', 'name') ->placeholder('My placeholder') !!} // Output <div class="form-group form-group-translation"> <label for="en[name]">Name (en)</label> <input type="text" name="en[name]" class="form-control" placeholder="My Placeholder" data-language="en" /> </div> <div class="form-group form-group-translation"> <label for="nl[name]">Name (nl)</label> <input type="text" name="nl[name]" class="form-control" placeholder="My Placeholder" data-language="nl" /> </div> // Controller public function postEdit($request) { $someModel->save($request->all()); }
在指定参数时,可以使用%name
和%locale
占位符。占位符将被替换为相应的输入名称或本地化。这对于像Angular.js或Vue.js这样的双向数据绑定库非常有用。例如。
{!! TranslatableBootForm::text('Title', 'title') ->attribute('some-attribute', 'Name: %name') ->attribute('another-attribute', 'Locale: %locale') !!} // Output <div class="form-group form-group-translation"> <label for="en[title]">Title (en)</label> <input type="text" name="en[title]" class="form-control" some-attribute="Name: en[title]" another-attribute="Locale: en" data-language="en" /> </div> <div class="form-group form-group-translation"> <label for="nl[title]">Title (nl)</label> <input type="text" name="nl[title]" class="form-control" some-attribute="Name: nl[title]" another-attribute="Locale: nl" data-language="nl" /> </div>
要只为某些选定的本地化渲染表单元素,请显式调用renderLocale()
作为最后一个方法,并传递本地化或本地化数组作为第一个参数
TranslatableBootForm::text('Name','name') ->renderLocale('en')
如果您需要只为某些本地化应用方法,请将方法后缀为ForLocale
,并传递本地化或本地化数组作为第一个参数
TranslatableBootForm::text('Name','name') ->dataForLocale('en', 'attributeName', 'attributeValue') ->addClassForLocale(['en', 'nl'], 'addedClass')
如果您需要构造除en[name]
之外的名称属性,例如item.en.name
,请手动在您的名称属性中插入%locale
占位符。请注意,这些输入的模型绑定将中断。
TranslatableBootForm::text('Name','item.%locale.name') // Output <div class="form-group form-group-translation"> <label for="item.en.name">Name (en)</label> <input type="text" name="item.en.name" class="form-control" data-language="en" /> </div>
有关自定义标签中的本地化指示符(以及其他设置),请参阅配置文件。