baklysystems / laravel-translatable-bootforms
为adamwathan/bootforms集成dimsav/laravel-translatable的功能。
Requires
- php: >=5.5.9
- adamwathan/bootforms: ^0.8 || ^0.9
- adamwathan/form: >=0.8.0 <0.8.13 || ^0.9
- dimsav/laravel-translatable: >=5.0,<9.0
- illuminate/support: >=5.0
Requires (Dev)
- orchestra/testbench: ^3.0
- phpunit/phpunit: ^4.0|^5.0
This package is auto-updated.
Last update: 2024-09-08 20:30:53 UTC
README
使BootForms与Laravel Translatable无缝工作!
通过导入此包,使用BootForms生成可翻译表单变得非常简单。
安装
-
运行Composer require命令安装此包
composer require propaganistas/laravel-translatable-bootforms
-
在您的应用程序配置中,将服务提供者在
$providers
数组中添加到BootFormsServiceProvider
和TranslatableServiceProvider
之后'providers' => [ AdamWathan\BootForms\BootFormsServiceProvider::class, Dimsav\Translatable\TranslatableServiceProvider::class, ... Propaganistas\LaravelTranslatableBootForms\TranslatableBootFormsServiceProvider::class, ],
-
在您的应用程序配置中,将外观添加到
$aliases
数组中'aliases' => [ ... 'TranslatableBootForm' => Propaganistas\LaravelTranslatableBootForms\Facades\TranslatableBootForm::class, ],
-
发布配置文件
php artisan vendor:publish --provider="Propaganistas\LaravelTranslatableBootForms\TranslatableBootFormsServiceProvider" --tag="config"
用法
只需像使用BootForm
一样使用TranslatableBootForm
外观!就这样。现在将根据Translatable配置文件中设置的本地化生成多个表单输入。它们将为每种语言提供相应的值,并保存所有翻译,而无需任何代码操作。
如果您不确定如何使用它,请查看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>
有关自定义标签中的本地化指示符(以及其他几个设置),请参阅配置文件。