Действия формы

Вы просматриваете документацию старой версии MoonShine. Рассмотрите возможность обновления вашего проекта до MoonShine 2.x.

По умолчанию в панели MoonShine в формах всего 1 действие - сохранение. Но также есть возможность добавить свои кастомные действия

namespace MoonShine\Resources;
 
use MoonShine\Models\MoonshineUser;
use MoonShine\FormActions\FormAction;
 
class PostResource extends Resource
{
public static string $model = App\Models\Post::class;
 
public static string $title = 'Статьи';
//...
 
public function formActions(): array
{
return [
FormAction::make('Удалить', function (Model $item) {
$item->delete();
}, 'Удален')->icon('delete')
];
}
 
//...
}

# Способ отображения

Для отображения действий в виде выпадающего списка можно воспользоваться методом showInDropdown

use MoonShine\FormActions\FormAction;
 
//...
public function formActions(): array
{
return [
FormAction::make('Deactivation', function (Model $item) {
$item->update(['active' => false]);
}, 'Deactivated')
->showInDropdown()
];
}
//...

Данный способ отображения используется по умолчанию

Для отображения действий в виде горизонтального списка можно воспользоваться методом showInLine

use MoonShine\FormActions\FormAction;
 
//...
public function formActions(): array
{
return [
FormAction::make('Deactivation', function (Model $item) {
$item->update(['active' => false]);
}, 'Deactivated')
->showInLine()
];
}
//...

# Подтверждение действия

Для подтверждения действия необходимо воспользоваться методом withConfirm

use MoonShine\FormActions\FormAction;
 
//...
public function formActions(): array
{
return [
FormAction::make('Deactivation', function (Model $item) {
$item->update(['active' => false]);
}, 'Deactivated')
->withConfirm()
];
}
//...

Методу withConfirm() можно передать заголовок и текст для модального окна, а так же название для кнопки подтверждения

use MoonShine\FormActions\FormAction;
 
//...
public function formActions(): array
{
return [
FormAction::make('Deactivation', function (Model $item) {
$item->update(['active' => false]);
}, 'Deactivated')
->withConfirm('Title', 'Modal content', 'Accept')
];
}
//...

Метод errorMessage() позволяет задать текст сообщения об ошибке

use MoonShine\FormActions\FormAction;
 
//...
public function formActions(): array
{
return [
FormAction::make('Deactivation', function (Model $item) {
$item->update(['active' => false]);
}, 'Deactivated')
->withConfirm('Title', 'Modal content', 'Accept')
->errorMessage('Fail')
];
}
//...