novius/laravel-filament-translatable
最新稳定版本:1.0.1
Composer 安装命令:
composer require novius/laravel-filament-translatable
包简介
A Laravel Filament package for translatable fields
README 文档
README
Introduction
This package allows you to manage Laravel Models that use Laravel Translatable in Laravel Filament.
Requirements
- Laravel Filament >= 4
- Laravel >= 11.0
- PHP >= 8.2
Installation
You can install the package via composer:
composer require novius/laravel-filament-translatable
Assets
Next we need to publish the package's assets. We do this by running the following command:
php artisan vendor:publish --provider="Novius\LaravelFilamentTranslatable\LaravelFilamentTranslatableServiceProvider" --tag="public"
Lang files
If you want to customize the lang files, you can publish them with:
php artisan vendor:publish --provider="Novius\LaravelFilamentTranslatable\LaravelFilamentTranslatableServiceProvider" --tag="lang"
Locale Filter
Add the LocaleFilter filter on your Filament Resource.
use Filament\Resources\Resource; use Novius\LaravelFilamentTranslatable\Filament\Tables\Filters\LocaleFilter; class Post extends Resource { public static function table(Table $table): Table { return $table /// ... ->filters([ LocaleFilter::make('locale'), /// ... ]); } }
Locale Column
Add the LocaleColumn column on your Filament Resource.
use Filament\Resources\Resource; use Novius\LaravelFilamentTranslatable\Filament\Tables\Columns\LocaleColumn; class Post extends Resource { public static function table(Table $table): Table { return $table /// ... ->columns([ /// ... LocaleColumn::make('locale'), ]); } }
Locale Input
Add the Locale input on your Filament Resource.
use Filament\Resources\Resource; use Novius\LaravelFilamentTranslatable\Filament\Forms\Components\Locale; class Post extends Resource { public static function form(Form $form): Form { return $form ->schema([ // ... Locale::make('locale') ->required(), // ... ]); } }
Translations Column and features
In your Filament Resource.
use Filament\Resources\Resource; use Novius\LaravelFilamentTranslatable\Filament\Tables\Columns\TranslationsColumn; class Post extends Resource { public static function form(Form $form): Form { return $form ->schema([ Hidden::make('locale_parent_id'), ]); } public static function form(Form $form): Form { return $table // ... ->columns([ // ... TranslationsColumn::make('translations') ->locales(['de', 'en']) // Optional. Restricted the locals displayed on this list ->flagWidth(16) // Optional. Width in pixel of the flags ->onlyMissing() // Optional. Will display only translations missing ->withoutMissing() // Optional. Will display only existing translations , // ... ]); } }
And declare your Create page like this :
<?php use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Str; use LaravelLang\Locales\Facades\Locales; use Novius\LaravelFilamentPageManager\Filament\PageManagerPlugin; use Novius\LaravelFilamentTranslatable\Filament\Resources\Pages\CreateRecord; class CreatePost extends CreateRecord { public static function getResource(): string { return PageManagerPlugin::getPlugin()->getResource('PostResource'); } protected function getDataFromTranslate(Model $parent, string $locale): array { $data = $parent->attributesToArray(); // Modify data according the parent $data['title'] = $parent->title.' '.Locales::get($locale)->native; $data['slug'] = Str::slug($data['title']); return $data; } }
Lint
Lint your code with Laravel Pint using:
composer run-script lint
Licence
This package is under GNU Affero General Public License v3 or (at your option) any later version.
统计信息
- 总下载量: 605
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 3
- 依赖项目数: 3
- 推荐数: 0
其他信息
- 授权协议: AGPL-3.0-or-later
- 更新时间: 2026-02-18