optimistdigital / nova-translatable
Laravel Nova 的一个 laravel-translatable 扩展。
Requires
- php: >=8.0
- laravel/nova: ^4.12
- nova-kit/nova-packages-tool: ^1.0
- spatie/laravel-translatable: ^4.0 || ^5.0 || ^6.0
- dev-main
- 2.3.1
- 2.3.0
- 2.2.0
- 2.1.6
- 2.1.5
- 2.1.4
- 2.1.3
- 2.1.2
- 2.1.1
- 2.1.0
- 2.0.6
- 2.0.5
- 2.0.4
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0.0
- 1.12.0
- 1.11.1
- 1.11.0
- 1.10.1
- 1.10.0
- 1.9.1
- 1.9.0
- 1.8.4
- 1.8.3
- 1.8.2
- 1.8.1
- 1.8.0
- 1.7.2
- 1.7.1
- 1.7.0
- 1.6.12
- 1.6.11
- 1.6.10
- 1.6.9
- 1.6.8
- 1.6.7
- 1.6.6
- 1.6.5
- 1.6.4
- 1.6.3
- 1.6.2
- 1.6.1
- 1.6.0
- 1.5.7
- 1.5.6
- 1.5.5
- 1.5.4
- 1.5.3
- 1.5.2
- 1.5.1
- 1.5.0
- 1.4.1
- 1.4.0
- 1.3.2
- 1.3.1
- 1.3.0
- 1.2.0
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.0
- dev-dependabot/npm_and_yarn/npm_and_yarn-d66d039ac5
This package is auto-updated.
Last update: 2024-09-17 02:48:07 UTC
README
这个 Laravel Nova 允许您使任何输入字段 spatie/laravel-translatable
兼容和可本地化。
要求
PHP: ^8.0
laravel/nova: ^4.12
spatie/laravel-translatable: ^4.0 || ^5.0 || ^6.0
特性
- 支持几乎所有字段(包括第三方字段)
- 自动支持默认验证
- 简单实现,只需少量代码更改(在
spatie/laravel-translatable
支持之后) - 区域选项卡,用于切换同一字段的区域值
- 双击选项卡以切换所有字段到该区域
- 支持 nova-settings 包
已知无法工作的字段
Image
和File
- 解决方案
- outl1ne/nova-media-hub
- 或任何使用 XHR 上传图像/文件的库
- 解决方案
限制
- 以下方法不能使用,因为此包内部使用了它们
resolveUsing
fillUsing
截图
安装
首先,设置 spatie/laravel-translatable。
通过 Composer 在 Laravel Nova 项目中安装此包
# Install nova-translatable composer require outl1ne/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 Outl1ne\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
特性。
页面上的所有字段的单选框
如果您不想在每个字段旁边显示区域选择,可以将 display_type
设置为 none
并将 Outl1ne\NovaTranslatable\Fields\LocaleSelect
字段添加到您的 Nova 资源中。这将为所有字段渲染单个选择。
边缘情况
BelongsToMany 允许DuplicateRelations 边缘情况
当您将此字段用作 BelongsToMany 中的 pivot 字段,并使用 ->allowDuplicateRelations()
时,并希望使用 NotExactlyAttached
规则过滤出精确匹配项,请使用 BelongsToManyTranslatable
字段而不是常规的 BelongsToMany
。
鸣谢
许可
本项目是开源软件,根据 MIT 许可证 许可。