Laravel Nova 多语言字段包使用教程
1、项目介绍
nova-translatable
是一个 Laravel Nova 包,允许你将任何输入字段转换为多语言字段。通过这个包,你可以轻松地在 Nova 资源中管理多语言内容,而无需编写额外的代码。
该项目由 Spatie 维护,是一个开源项目,遵循 MIT 许可证。它支持多种字段类型,包括文本、数字、多选等,并且可以自定义语言选项。
2、项目快速启动
安装
首先,使用 Composer 安装 nova-translatable
包:
composer require spatie/nova-translatable
发布配置文件(可选)
你可以选择发布配置文件以设置默认语言:
php artisan vendor:publish --tag="nova-translatable-config"
使用示例
在 Nova 资源中,你可以通过调用 ->translatable()
方法将任何字段转换为多语言字段。以下是一些示例:
use Spatie\NovaTranslatable\Translatable;
use Laravel\Nova\Fields\Text;
use Laravel\Nova\Fields\Number;
use Laravel\Nova\Fields\Multiselect;
public function fields(Request $request)
{
return [
// 文本字段
Text::make('Name')
->rules('required', 'min:2')
->translatable(),
// 多选字段
Multiselect::make('Football teams')
->rules('required')
->translatable(),
// 数字字段,自定义语言选项
Number::make('Population')
->translatable([
'en' => 'English',
'et' => 'Estonian',
]),
];
}
验证规则
你可以为每个语言定义特定的验证规则。为此,你需要在字段上调用 ->rulesFor()
方法,并将 HandlesTranslatable
trait 添加到你的 Nova 资源中。
use Spatie\NovaTranslatable\HandlesTranslatable;
class Post extends Resource
{
use HandlesTranslatable;
public function fields(Request $request)
{
return [
Text::make('Title')
->rulesFor('en', 'required|min:2')
->rulesFor('et', 'required|min:3')
->translatable(),
];
}
}
3、应用案例和最佳实践
应用案例
假设你正在开发一个多语言的博客平台,用户可以在不同的语言中发布文章。使用 nova-translatable
包,你可以轻松地管理文章标题、内容和元数据的多语言版本。
最佳实践
- 默认语言设置:在配置文件中设置默认语言,以减少重复代码。
- 自定义语言选项:根据项目需求,自定义语言选项,确保支持所有必要的语言。
- 验证规则:为每种语言定义适当的验证规则,确保数据的一致性和完整性。
4、典型生态项目
nova-translatable
是 Laravel Nova 生态系统中的一个重要组件。以下是一些与之相关的典型生态项目:
- Laravel Nova:Laravel 的管理面板框架,
nova-translatable
是其扩展包之一。 - Spatie 开源项目:Spatie 维护了多个 Laravel 相关的开源项目,包括
laravel-translatable
等。 - Nova Packages:Laravel Nova 的官方包仓库,包含了许多有用的扩展包。
通过这些生态项目,你可以进一步扩展和定制你的 Laravel Nova 应用,满足各种复杂的需求。