Download the PHP package doriiaan/filament-astrotomic without Composer
On this page you can find all versions of the php package doriiaan/filament-astrotomic. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download doriiaan/filament-astrotomic
More information about doriiaan/filament-astrotomic
Files in doriiaan/filament-astrotomic
Package filament-astrotomic
Short Description Filament plugin which allows translations to be added to Filament resources.
License MIT
Homepage https://github.com/Doriiaan/filament-astrotomic/
Informations about the package filament-astrotomic
Filament Astrotomic
This package is an extension for Filament and laravel-translatable.
This package is a copy of cactus-galaxy/filament-astrotomic for Filament 4. The original package is no longer maintained.
Installation
You can install the package via Composer:
Publish configs for astrotomic/laravel-translatable package:
After this, you will have to configure the locales your app should use.
Adding the plugin to a panel
To add a plugin to a panel, you must include it in the configuration file using the plugins() method:
Preparing your model class
You need to make your model translatable. You can read how to do this in documentation for Laravel translatable.
Preparing your resource class
You must apply the ResourceTranslatable trait to your resource class:
Making resource pages translatable
After preparing your resource class, you must make each of your resource's pages translatable too.
You can find your resource's pages in the Pages directory of each resource folder.
To prepare a page, you must apply the corresponding {Type}Translatable trait to it:
And if you have a ViewRecord page for your resource:
Setting the translatable locales for a particular resource
By default, the translatable locales loaded using Astrotomic's Locales helper from method all()
which returns all locales from the translatable.locales configuration.
Alternatively, you can customize the translatable locales for a particular resource by overriding the getTranslatableLocales() method in your resource class:
Using locale tabs on the form
TranslatableTabs extends the default Filament\Schemas\Components\Tabs component and provides a way to create tab schema tabs for each locale.
Within the localeTabSchema method, you can define the callback for schema for each tab.
This callback will be called for each locale to generate scheme for tab.
To accept the TranslatableTab instance as an argument to get the current locale you need to name argument as $translatableTab or use type hint, like in example bellow.
Here is an example of how to use TranslatableTabs in the CourseResource form:
With this code, you will get tabs for each locale with name field in each tab. name field will be required only for the main locale.
By default $tab->makeName('name') uses array syntax for naming -{$locale}.{$name}, but you can change it by calling makeNameUsing on TranslatableTabs, for example, use plain syntax:
Prepend or append tabs
Sometimes you need to add tabs before or after the localized tabs. You can use the prependTabs and appendTabs methods for this:
Processing modal forms with translations
If you want to use translations in modal forms, you need to make some changes, to correctly mutate and fill your form.
Edit table action
For example, we have CourseResource but don't have an edit page.
To process translations in the Edit action modal, you need to override the mutateRecordDataUsing method of the EditAction class in the resource class.
And if you are using a Column with path translation.*, make sure to unset the translation relation from the record data before returning it, otherwise, the record data will be saved incorrectly.
Select with modal options
There is a more complex example with Select component.
For example, we need to manage (create or edit) a category for the product.
In the CategoryResource defined form with translatable fields.
Then in CourseResource we can use Select component with modal options. Note that we need to call the fillEditOptionActionFormUsing method and mutate record data
Columns for translatable models on listings
Out of the box, Filament supports nesting for columns, which means you can use . in the column path to access nested properties, and you don't need a special column for translatable models.
But searching by translatable column is a bit more complicated. Simply overload searchable query like this.
In addition, in Filament 4, Text columns can be arrays. To show only the first translations, use ->limitList(1).
Maybe in the feature someone will create a column for that 🙂, but currently you can use this code to configure your columns.
Testing
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
Credits
- Alary Dorian
- Oleksandr Moik
- All Contributors
License
The MIT License (MIT). Please see License File for more information.
All versions of filament-astrotomic with dependencies
astrotomic/laravel-translatable Version ^11.16
filament/filament Version ^4.0 || ^5.0
filament/forms Version ^4.0 || ^5.0
filament/tables Version ^4.0 || ^5.0
spatie/laravel-package-tools Version ^1.15.0