djstarcom / nova-astrotranslatable
为 Laravel Nova 设计的 Astrotomic Translatable 扩展。
3.1.0
2023-01-20 19:18 UTC
Requires
- php: >=8.0
- astrotomic/laravel-translatable: ^11.5
- laravel/nova: ^4.0
- nova-kit/nova-packages-tool: ^1.0
This package is auto-updated.
Last update: 2024-09-20 23:13:47 UTC
README
此 Laravel Nova 字段允许您使任何输入字段与 astrotomic/laravel-translatable 兼容并本地化。
它是由 Optimist Digital 的 Laravel Nova Translatable 字段派生的,专为 Spatie Laravel Translatable 包定制 - 因此,我们非常感谢他们,99% 的工作都是由他们完成的!
要求
php: >=8.0,laravel/nova: ^4.0astrotomic/laravel-translatable: ^11.5
功能
- 支持几乎所有字段(包括第三方字段)
- 自动支持默认验证
- 简单实现,代码更改最少(在支持
astrotomic/laravel-translatable之后) - 区域标签,可以切换同一字段的不同的区域值
已知不工作的字段
Image和File
限制
- 以下方法不能使用,因为此包内部使用了它们
resolveUsingfillUsingdisplayUsing(最终可能修复)
屏幕截图
安装
首先,设置 astrotomic/laravel-translatable。
通过 Composer 在 Laravel Nova 项目中安装此包
# Install nova-translatable composer require djstarcom/nova-astrotranslatable # 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 DJStarCOM\NovaAstrotranslatable\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"
鸣谢
许可
此项目是开源软件,许可协议为 MIT 许可证。


