Я использую Филамент 3.2. Как обновить контент-заполнитель в прямом эфире?
Select::make('authors')
->relationship('authors', 'name')
->live()
->afterStateUpdated(function (string $operation, $state, Forms\Set $set, Forms\Get $get) {
$user = User::find($state[0]);
if ($user) {
$userEmail = $user->email;
$set('authoremail', $userEmail);
}
}),
// TextInput::make('authoremail')
// ->label("Author's Email")
// ->disabled(),
Placeholder::make('authoremail')
Если это TextInput, то это работает. Но на Placeholder это не работает. Как мне заставить его работать на Placeholder?






https://filamentphp.com/docs/3.x/forms/layout/placeholder#dynamically-generating-placeholder-content
Передав замыкание методу content(), вы можете динамически генерировать заполнитель. [...]
use Filament\Forms\Components\Placeholder;
use Filament\Forms\Get;
Placeholder::make('total')
->content(function (Get $get): string {
return '€' . number_format($get('cost') * $get('quantity'), 2);
})
Поэтому, применяя это к вашему коду, я бы попытался сделать что-то вроде этого:
Select::make('authors')
->relationship('authors', 'name')
->live(),
Placeholder::make('authoremail')
->content(function (Get $get): ?string {
$user = User::find($get('authors')[0] ?? null);
return $user?->email;
}),