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

Вспомогательные функции

Методы для создания, настройки и обработки действий

Создание и настройка

make
mixed ...$args → static
Универсальный фабричный метод. Принимает любое количество аргументов, которые передаются в конструктор класса. Эквивалентен new, но обеспечивает более чистый синтаксис.
action
callable $callback → static
Задаёт обработчик действия в виде callable-функции вместо создания отдельного класса.
icon
string $icon → static
Устанавливает иконку для действия. Отображается рядом с кнопкой или в меню. Каталог иконок — lucide.dev.
confirmed
?bool $val = true → static
Включает/выключает подтверждение действия через диалоговое окно.
can
string|callable $ability → static
Задаёт правило проверки прав доступа к действию.
// Инлайн-действие
Action::make('Рассчитать возраст')
    ->icon('tabler-sparkles')
    ->confirmed()
    ->can('admin')
    ->action(function (FrameRequest $request, array $state) {
        ...
        return Action::set(['description' => $description]);
    });
// Отдельный класс
YouClass::make()

Мета параметры

meta
→ array
Возвращает мета-информацию действия.
withMeta
array $meta → static
Передаёт дополнительные параметры клиенту.
YouClass::make()->withMeta([
    'accept' => ['application/pdf', 'application/json'],
])

Обработчик действия

handle
LazyCollection $models, ActionFields $fields → ?ActionResult
Основной метод с бизнес-логикой. Переопределяется в пользовательских классах действий. Применяется к отобранным моделям.
public function handle(LazyCollection $models, ActionFields $fields): ?ActionResult
{
    $model = $models->first();
    $model->cancelOrder();

    return self::push([
        'name' => 'resource.detail',
        'params' => [
            'resource' => 'orders',
            'id' => $model->getKey(),
        ],
    ]);
}

Результаты действий

Методы ниже возвращают ActionResult и определяют, что произойдёт после выполнения действия.

redirect
string $value, bool $newPage = false → ActionResult
Перенаправляет пользователя по указанному URL. Второй параметр: false — текущая вкладка, true — новая вкладка.
push
array $value → ActionResult
Внутреннее перенаправление в приложении (например, на страницу деталей ресурса).
message
string $value → ActionResult
Завершает действие с информационным сообщением для пользователя.
error
string $value → ActionResult
Прерывает действие с сообщением об ошибке.
set
array $value → ActionResult
Патчит состояние текущей формы — заданные ключи перезаписываются возвращёнными значениями. Применяется в действиях над полями формы.
compose
ActionResult ...$results → ActionResult
Объединяет несколько результатов в один ответ. Клиент применяет их по порядку, поэтому из одного handle() можно одновременно показать тост, пропатчить форму (set) и сделать переход (push/redirect). Вложенные compose разворачиваются автоматически.
openAction
string $name, array $prefill = [] → ActionResult
Открывает на клиенте другое действие, не перезагружая страницу. Второй параметр предзаполняет его форму. Позволяет выстраивать цепочки действий.
attachments
string $value, array $attachments → ActionResult
Возвращает результат с сообщением и массивом вложений (например, сгенерированных файлов для скачивания).
custom
string $action, mixed $value = null → ActionResult
Возвращает кастомный ответ. Принимает название события и данные.
// Перенаправление на внешний URL в новой вкладке
return self::redirect((string) $redirectUrl, true);
// Информационное сообщение
return self::message('Заказ опубликован');
// Ошибка
return self::error('Заказ уже опубликован');
// Несколько результатов из одного handle(): тост И переход в редактор копии
return self::compose(
    self::message('Копия создана'),
    self::push([
        'name' => 'resources.record.editing',
        'params' => ['resource' => 'orders', 'id' => $clone->getKey()],
    ]),
);

Представление формы

Действия с полями формы умеют менять способ её показа.

slideOver
bool $val = true → static
Открывает форму действия в выезжающей справа панели (slide-over) вместо центрированного модального окна. Удобно для форм с большим числом полей.
fillForm
array $values → static
Предзаполняет форму действия при открытии. Значения подставляются в состояние формы, переопределяя значения полей по умолчанию.
PageNoteAction::make()
    ->slideOver()
    ->fillForm(['note' => 'Шаблон: проверить SEO, обновить контент…']);