Accept the option picked in selects of translatable records
Saving a page with a category failed with "El campo categoría no está
en la lista de valores permitidos" — for every category, not only the
one being tried. Filament builds such a list through a query, which
handles `->relationship('category', 'name->es')`, but validates a choice
by reading the title back off the record as a property,
`$record->{'name->es'}`, which does not exist. No label, so every
option was refused.
The same pattern was in seven more places: a call's, a testimonial's,
a talk's and a repository's project, a testimonial's service, and the
page and application filters. TranslatedOptionLabel gives Filament the
record's own translation instead, in the language of whoever uses the
panel; the JSON path stays for search and ordering.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -8,6 +8,7 @@ use App\Enums\PageStatus;
|
||||
use App\Filament\Support\PreviewAction;
|
||||
use App\Filament\Support\ReviewActions;
|
||||
use App\Filament\Support\ReviewStatusColumn;
|
||||
use App\Filament\Support\TranslatedOptionLabel;
|
||||
use App\Filament\Support\TranslationStatusColumn;
|
||||
use App\Filament\Support\ViewsColumn;
|
||||
use App\Models\Page;
|
||||
@@ -127,6 +128,7 @@ class PagesTable
|
||||
SelectFilter::make('category')
|
||||
->label(__('panel.pages.fields.category'))
|
||||
->relationship('category', 'name->'.config('locales.default'))
|
||||
->getOptionLabelFromRecordUsing(TranslatedOptionLabel::using('name'))
|
||||
->searchable()
|
||||
->preload(),
|
||||
|
||||
|
||||
Reference in New Issue
Block a user