Поддержка
Действия

В полях

Действия, привязанные к отдельным полям формы

Действия можно прикреплять к отдельным полям на формах создания и редактирования. Они выполняют операции с данными поля или других полей формы:

  • Генерация slug из заголовка или сложного пароля
  • Валидация email через внешний сервис
  • Расчёт значения на основе других полей

Пример

Действие, вычисляющее возраст по дате рождения и записывающее результат в поле «Bio».

Подключение действия к полю:

DateTime::make('birthday', 'Birthday')
    ->nullable()
    ->actions([
        Action::make('Calculate age')
            ->icon('tabler-sparkles')
            ->confirmed()
            ->action(static function (
                FrameRequest $request,
                array $state,
            ): ActionResult {
                $birthday = data_get($state, 'birthday');

                if (!$birthday) {
                    abort(422, __('Birthday is required'));
                }

                $age = Carbon::parse($birthday)->age;

                return Action::set([
                    'bio' => __('I am :age years old', ['age' => $age]),
                ]);
            }),
    ])
    ->format('d.m.Y');

Поле, которое обновляется действием:

Textarea::make('bio', 'Bio')
    ->condition('$birthday')
    ->rules([
        Rule::requiredIf(fn() => request()->date('birthday')),
    ])
    ->help('Write some useful information'),