34ml/filament-translatable-field

一个用于处理翻译的laravel filament字段

v2.0.12 2023-12-19 08:46 UTC

README

translatableFieldHeader

此包使您能够实现以下功能

  1. 渲染语言选择器以更改本地化字段
  2. 您可以一键保存本地化字段的数据
  3. 您可以在关系管理器中使用它来显示本地化字段

translatableField

此包依赖于 spatie/laravel-translatable,请在项目中设置翻译逻辑之前先检查它。

安装

您可以通过composer安装此包

composer require 34ml/filament-translatable-field

您可以使用以下命令发布配置文件

php artisan vendor:publish --tag="filament-translatable-field-config"

这是发布的配置文件内容,其中为列出的每种语言创建字段

return [
    'locales' => [
        'en' => 'English',
        'ar' => 'Arabic',
    ],
    'select_translation_field_name' => 'select_language',
];

可翻译字段使用方法

基本用法

  • 只需在资源、视图、创建或编辑页面中的表单功能内添加该字段
 ..._34ML\FilamentTranslatableField::make(
     'your_translatable_field_name',
     \Filament\Forms\Components\TextInput::class, // The field type class 
)
  • 如果您想自定义字段的标签
 ..._34ML\FilamentTranslatableField::make(
     'your_translatable_field_name',
     \Filament\Forms\Components\TextInput::class, // The field type class
     'your_field_displayed_name', // Optional
)
  • 如果您想添加filament字段功能
  ..._34ML\FilamentTranslatableField::make(
     'your_translatable_field_name',
     \Filament\Forms\Components\TextInput::class, // The field type class 
    // add your filament field functions as a callback, you can add it as one function
    callbacks: function (){
        $this->required();
        $this->numeric();
        return $this; // You have to return the field or the callbacks won't work
    }
)

语言选择器

如果您想添加一个仅显示选定语言的字段的语言选择器,而不是显示所有字段,您可以在资源、视图、创建或编辑页面中的表单功能内简单添加此字段

use _34ML\FilamentTranslatableField\Forms\Components\LanguageSelector;

return $form
           ->schema([
               LanguageSelector::make(),
                ]);

关系管理器

您需要在关系管理器中添加此代码

    public static function getRecordTitle(?Model $record): ?string
    {
        return $record->getTranslation('your_title_column', config('filament-translatable-field.locales')[0]);
    }

致谢

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件