Массовые действия

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

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

namespace MoonShine\Resources;
 
use MoonShine\Models\MoonshineUser;
use MoonShine\BulkActions\BulkAction;
 
class PostResource extends Resource
{
public static string $model = App\Models\Post::class;
 
public static string $title = 'Статьи';
//...
 
public function bulkActions(): array
{
return [
BulkAction::make('Деактивация', function (Model $item) {
$item->update(['active' => false]);
}, 'Деактивирован')->icon('app')
];
}
 
//...
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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