Действия карточки

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

# Регистрация

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

namespace MoonShine\Resources;
 
use MoonShine\Models\MoonshineUser;
use MoonShine\ItemActions\ItemAction;
 
class PostResource extends Resource
{
public static string $model = App\Models\Post::class;
 
public static string $title = 'Articles';
//...
 
public function itemActions(): array
{
return [
ItemAction::make('Deactivating', function (Model $item) {
$item->update(['active' => false]);
}, 'Deactivated')->icon('app')
];
}
 
//...
}

Первый аргумент - Наименование экшена. Второй аргумент - callback с параметром текущего элемента. Третий аргумент - сообщение, которое отобразится после выполнения экшена

# Условие отображения

Отображать действие по условию

...
public function itemActions(): array
{
return [
ItemAction::make('Restore', function (Model $item) {
$item->restore();
}, 'Retrieved')
->canSee(fn(Model $item) => $item->trashed())
];
}
...

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

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

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

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

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

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

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

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

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

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

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

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

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