wowmaking / nova-translatable
Laravel Nova的laravel-translatable扩展。
dev-master
2023-07-07 12:37 UTC
Requires
- php: >=7.1.0
- laravel/nova: ^2.9 || ^3.0
- spatie/laravel-translatable: ^4.0 || ^5.0
This package is not auto-updated.
Last update: 2024-09-28 17:33:21 UTC
README
此Laravel Nova允许您使任何输入字段与spatie/laravel-translatable
兼容并本地化。
要求
laravel/nova: ^2.9 || ^3.0
spatie/laravel-translatable: ^4.0 || ^5.0
功能
- 支持几乎所有字段(包括第三方字段)
- 自动支持默认验证
- 简单易用,代码更改最少(在添加
spatie/laravel-translatable
支持后) - 地区选项卡以在相同字段的不同的地区值之间切换
- 双击选项卡以切换所有字段到该地区
- 支持nova-settings包
已知无法正常工作的字段
Image
和File
- 解决方案
- optimistdigital/nova-media-field
- 或任何使用XHR上传图像/文件的库
- 解决方案
限制
- 以下方法不能使用,因为该包内部使用它们
resolveUsing
fillUsing
displayUsing
(可能最终会修复)
屏幕截图
安装
首先,设置spatie/laravel-translatable。
通过Composer在Laravel Nova项目中安装包
# Install nova-translatable composer require optimistdigital/nova-translatable # Publish configuration (optional, but useful for setting default locales) php artisan vendor:publish --tag="nova-translatable-config"
用法
在任意字段上调用->translatable()
,如下所示
// Any Nova field Text::make('Name') ->rules('required', 'min:2') ->translatable(), // Any third-party input field Multiselect::make('Football teams') ->rules('required') ->translatable(), // Optionally pass custom locales on a per-field basis Number::make('Population') ->translatable([ 'en' => 'English', 'et' => 'Estonian', ]),
验证
可以定义特定于地区的验证规则。
为此,在您的字段上添加->rulesFor()
并在您的Nova资源上添加HandlesTranslatable
特质。
->rulesFor
接受array|string|callable
地区和array|callable
规则。
use OptimistDigital\NovaTranslatable\HandlesTranslatable; class Product extends Resource { use HandlesTranslatable; public function fields(Request $request) { return [ Text::make(__('Name'), 'name') ->sortable() ->translatable() ->rules(['max:255']) ->rulesFor('en', [ 'required', ]) ->rulesFor(['en', 'et'], function ($locale) { return ["unique:products,name->$locale{{resourceId}}"]; }), ]; } }
在这个例子中,规则将被添加到以下值
max: name.* required: name.en unique: name.en & name.et
配置
您可以在配置文件中为所有translatable
字段定义默认地区。可以使用以下命令发布配置文件
php artisan vendor:publish --tag="nova-translatable-config"
从配置选项填充其他地区
配置选项fill_other_locales_from
允许您从单个地区预先填充其他地区。这需要资源也具有HandlesTranslatable
特质。
边缘情况
BelongsToMany allowDuplicateRelations边缘情况
当您使用此字段作为具有->allowDuplicateRelations()
的BelongsToMany中的枢纽字段并希望使用NotExactlyAttached
规则过滤出精确匹配时,请使用BelongsToManyTranslatable
字段而不是常规的BelongsToMany
。
致谢
许可证
本项目是开源软件,许可协议为MIT许可证。