34ml / filament-translatable-field
一个用于处理翻译的laravel filament字段
v2.0.12
2023-12-19 08:46 UTC
Requires
- php: ^8.1 | ^8.2
- filament/filament: ^3.0
- illuminate/contracts: *
- spatie/laravel-package-tools: ^1.14.0
- spatie/laravel-translatable: *
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.9
- nunomaduro/larastan: ^2.0.1
- orchestra/testbench: ^8.0
- pestphp/pest: ^2.0
- pestphp/pest-plugin-arch: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- spatie/laravel-ray: ^1.26
README
此包使您能够实现以下功能
- 渲染语言选择器以更改本地化字段
- 您可以一键保存本地化字段的数据
- 您可以在关系管理器中使用它来显示本地化字段
此包依赖于 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)。有关更多信息,请参阅许可证文件。