Кнопки отображаются на страницах ресурса: на странице индекса, страницах форм (создание/редактирование) и странице детального просмотра.
Они отвечают за основные действия с элементами и являются компонентами ActionButton
.
В админ-панели MoonShine существует множество методов, которые позволяют переопределить ресурс как отдельную кнопку, так и всю группу.
Кнопки для создания, просмотра, редактирования, удаления и массового удаления размещены в отдельных классах, чтобы применить к ним все необходимые методы и тем самым устранить дублирование, поскольку эти кнопки также используются в HasMany, BelongsToMany и т.д.
Модификация
Метод modifyCreateButton()
позволяет модифицировать кнопку для создания нового элемента.
use MoonShine\ActionButtons\ActionButton;
protected function modifyCreateButton(ActionButton $button): ActionButton
{
return $button->error();
}
use MoonShine\ActionButtons\ActionButton;
protected function modifyCreateButton(ActionButton $button): ActionButton
{
return $button->error();
}
use MoonShine\ActionButtons\ActionButton;
protected function modifyCreateButton(ActionButton $button): ActionButton
{
return $button->error();
}
use MoonShine\ActionButtons\ActionButton;
protected function modifyCreateButton(ActionButton $button): ActionButton
{
return $button->error();
}
use MoonShine\ActionButtons\ActionButton;
protected function modifyCreateButton(ActionButton $button): ActionButton
{
return $button->error();
}

Переопределение
Метод getCreateButton()
позволяет переопределить кнопку для создания нового элемента.
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Buttons\CreateButton;
public function getCreateButton(?string $componentName = null, bool $isAsync = false): ActionButton
{
return CreateButton::for(
$this,
componentName: $componentName,
isAsync: $isAsync
);
}
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Buttons\CreateButton;
public function getCreateButton(?string $componentName = null, bool $isAsync = false): ActionButton
{
return CreateButton::for(
$this,
componentName: $componentName,
isAsync: $isAsync
);
}
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Buttons\CreateButton;
public function getCreateButton(?string $componentName = null, bool $isAsync = false): ActionButton
{
return CreateButton::for(
$this,
componentName: $componentName,
isAsync: $isAsync
);
}
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Buttons\CreateButton;
public function getCreateButton(?string $componentName = null, bool $isAsync = false): ActionButton
{
return CreateButton::for(
$this,
componentName: $componentName,
isAsync: $isAsync
);
}
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Buttons\CreateButton;
public function getCreateButton(?string $componentName = null, bool $isAsync = false): ActionButton
{
return CreateButton::for(
$this,
componentName: $componentName,
isAsync: $isAsync
);
}
Модификация
Метод modifyDetailButton()
позволяет модифицировать кнопку детального просмотра элемента.
use MoonShine\ActionButtons\ActionButton;
protected function modifyDetailButton(ActionButton $button): ActionButton
{
return $button->warning();
}
use MoonShine\ActionButtons\ActionButton;
protected function modifyDetailButton(ActionButton $button): ActionButton
{
return $button->warning();
}
use MoonShine\ActionButtons\ActionButton;
protected function modifyDetailButton(ActionButton $button): ActionButton
{
return $button->warning();
}
use MoonShine\ActionButtons\ActionButton;
protected function modifyDetailButton(ActionButton $button): ActionButton
{
return $button->warning();
}
use MoonShine\ActionButtons\ActionButton;
protected function modifyDetailButton(ActionButton $button): ActionButton
{
return $button->warning();
}

Переопределение
Метод getDetailButton()
позволяет переопределить кнопку детального просмотра элемента.
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Buttons\DetailButton;
public function getDetailButton(bool $isAsync = false): ActionButton
{
return DetailButton::for(
$this,
isAsync: $isAsync
);
}
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Buttons\DetailButton;
public function getDetailButton(bool $isAsync = false): ActionButton
{
return DetailButton::for(
$this,
isAsync: $isAsync
);
}
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Buttons\DetailButton;
public function getDetailButton(bool $isAsync = false): ActionButton
{
return DetailButton::for(
$this,
isAsync: $isAsync
);
}
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Buttons\DetailButton;
public function getDetailButton(bool $isAsync = false): ActionButton
{
return DetailButton::for(
$this,
isAsync: $isAsync
);
}
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Buttons\DetailButton;
public function getDetailButton(bool $isAsync = false): ActionButton
{
return DetailButton::for(
$this,
isAsync: $isAsync
);
}
Модификация
Метод modifyEditButton()
позволяет модифицировать кнопку редактирования элемента.
use MoonShine\ActionButtons\ActionButton;
protected function modifyEditButton(ActionButton $button): ActionButton
{
return $button->icon('heroicons.pencil-square');
}
use MoonShine\ActionButtons\ActionButton;
protected function modifyEditButton(ActionButton $button): ActionButton
{
return $button->icon('heroicons.pencil-square');
}
use MoonShine\ActionButtons\ActionButton;
protected function modifyEditButton(ActionButton $button): ActionButton
{
return $button->icon('heroicons.pencil-square');
}
use MoonShine\ActionButtons\ActionButton;
protected function modifyEditButton(ActionButton $button): ActionButton
{
return $button->icon('heroicons.pencil-square');
}
use MoonShine\ActionButtons\ActionButton;
protected function modifyEditButton(ActionButton $button): ActionButton
{
return $button->icon('heroicons.pencil-square');
}

Переопределение
Метод getEditButton()
позволяет переопределить кнопку редактирования элемента.
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Buttons\EditButton;
public function getEditButton(?string $componentName = null, bool $isAsync = false): ActionButton
{
return EditButton::for(
$this,
componentName: $componentName,
isAsync: $isAsync
);
}
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Buttons\EditButton;
public function getEditButton(?string $componentName = null, bool $isAsync = false): ActionButton
{
return EditButton::for(
$this,
componentName: $componentName,
isAsync: $isAsync
);
}
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Buttons\EditButton;
public function getEditButton(?string $componentName = null, bool $isAsync = false): ActionButton
{
return EditButton::for(
$this,
componentName: $componentName,
isAsync: $isAsync
);
}
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Buttons\EditButton;
public function getEditButton(?string $componentName = null, bool $isAsync = false): ActionButton
{
return EditButton::for(
$this,
componentName: $componentName,
isAsync: $isAsync
);
}
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Buttons\EditButton;
public function getEditButton(?string $componentName = null, bool $isAsync = false): ActionButton
{
return EditButton::for(
$this,
componentName: $componentName,
isAsync: $isAsync
);
}
Модификация
Метод modifyDeleteButton()
позволяет модифицировать кнопку удаления элемента.
use MoonShine\ActionButtons\ActionButton;
protected function modifyDeleteButton(ActionButton $button): ActionButton
{
return $button->icon('heroicons.x-mark');
}
use MoonShine\ActionButtons\ActionButton;
protected function modifyDeleteButton(ActionButton $button): ActionButton
{
return $button->icon('heroicons.x-mark');
}
use MoonShine\ActionButtons\ActionButton;
protected function modifyDeleteButton(ActionButton $button): ActionButton
{
return $button->icon('heroicons.x-mark');
}
use MoonShine\ActionButtons\ActionButton;
protected function modifyDeleteButton(ActionButton $button): ActionButton
{
return $button->icon('heroicons.x-mark');
}
use MoonShine\ActionButtons\ActionButton;
protected function modifyDeleteButton(ActionButton $button): ActionButton
{
return $button->icon('heroicons.x-mark');
}

Переопределение
Метод getDeleteButton()
позволяет переопределить кнопку удаления элемента.
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Buttons\DeleteButton;
public function getDeleteButton(
?string $componentName = null,
string $redirectAfterDelete = '',
bool $isAsync = false
): ActionButton {
return DeleteButton::for(
$this,
componentName: $componentName,
redirectAfterDelete: $isAsync ? '' : $redirectAfterDelete,
isAsync: $isAsync
);
}
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Buttons\DeleteButton;
public function getDeleteButton(
?string $componentName = null,
string $redirectAfterDelete = '',
bool $isAsync = false
): ActionButton {
return DeleteButton::for(
$this,
componentName: $componentName,
redirectAfterDelete: $isAsync ? '' : $redirectAfterDelete,
isAsync: $isAsync
);
}
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Buttons\DeleteButton;
public function getDeleteButton(
?string $componentName = null,
string $redirectAfterDelete = '',
bool $isAsync = false
): ActionButton {
return DeleteButton::for(
$this,
componentName: $componentName,
redirectAfterDelete: $isAsync ? '' : $redirectAfterDelete,
isAsync: $isAsync
);
}
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Buttons\DeleteButton;
public function getDeleteButton(
?string $componentName = null,
string $redirectAfterDelete = '',
bool $isAsync = false
): ActionButton {
return DeleteButton::for(
$this,
componentName: $componentName,
redirectAfterDelete: $isAsync ? '' : $redirectAfterDelete,
isAsync: $isAsync
);
}
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Buttons\DeleteButton;
public function getDeleteButton(
?string $componentName = null,
string $redirectAfterDelete = '',
bool $isAsync = false
): ActionButton {
return DeleteButton::for(
$this,
componentName: $componentName,
redirectAfterDelete: $isAsync ? '' : $redirectAfterDelete,
isAsync: $isAsync
);
}
Модификация
Метод modifyMassDeleteButton()
позволяет модифицировать кнопку массового удаления.
use MoonShine\ActionButtons\ActionButton;
protected function modifyMassDeleteButton(ActionButton $button): ActionButton
{
return $button->icon('heroicons.x-mark');
}
use MoonShine\ActionButtons\ActionButton;
protected function modifyMassDeleteButton(ActionButton $button): ActionButton
{
return $button->icon('heroicons.x-mark');
}
use MoonShine\ActionButtons\ActionButton;
protected function modifyMassDeleteButton(ActionButton $button): ActionButton
{
return $button->icon('heroicons.x-mark');
}
use MoonShine\ActionButtons\ActionButton;
protected function modifyMassDeleteButton(ActionButton $button): ActionButton
{
return $button->icon('heroicons.x-mark');
}
use MoonShine\ActionButtons\ActionButton;
protected function modifyMassDeleteButton(ActionButton $button): ActionButton
{
return $button->icon('heroicons.x-mark');
}

Переопределение
Метод getMassDeleteButton()
позволяет переопределить кнопку массового удаления.
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Buttons\MassDeleteButton;
public function getMassDeleteButton(
?string $componentName = null,
string $redirectAfterDelete = '',
bool $isAsync = false
): ActionButton {
return MassDeleteButton::for(
$this,
componentName: $componentName,
redirectAfterDelete: $isAsync ? '' : $redirectAfterDelete,
isAsync: $isAsync
);
}
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Buttons\MassDeleteButton;
public function getMassDeleteButton(
?string $componentName = null,
string $redirectAfterDelete = '',
bool $isAsync = false
): ActionButton {
return MassDeleteButton::for(
$this,
componentName: $componentName,
redirectAfterDelete: $isAsync ? '' : $redirectAfterDelete,
isAsync: $isAsync
);
}
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Buttons\MassDeleteButton;
public function getMassDeleteButton(
?string $componentName = null,
string $redirectAfterDelete = '',
bool $isAsync = false
): ActionButton {
return MassDeleteButton::for(
$this,
componentName: $componentName,
redirectAfterDelete: $isAsync ? '' : $redirectAfterDelete,
isAsync: $isAsync
);
}
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Buttons\MassDeleteButton;
public function getMassDeleteButton(
?string $componentName = null,
string $redirectAfterDelete = '',
bool $isAsync = false
): ActionButton {
return MassDeleteButton::for(
$this,
componentName: $componentName,
redirectAfterDelete: $isAsync ? '' : $redirectAfterDelete,
isAsync: $isAsync
);
}
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Buttons\MassDeleteButton;
public function getMassDeleteButton(
?string $componentName = null,
string $redirectAfterDelete = '',
bool $isAsync = false
): ActionButton {
return MassDeleteButton::for(
$this,
componentName: $componentName,
redirectAfterDelete: $isAsync ? '' : $redirectAfterDelete,
isAsync: $isAsync
);
}
Модификация
Метод modifyExportButton()
позволяет модифицировать кнопку экспорта.
use MoonShine\ActionButtons\ActionButton;
protected function modifyExportButton(ActionButton $button): ActionButton
{
return $button->secondary();
}
use MoonShine\ActionButtons\ActionButton;
protected function modifyExportButton(ActionButton $button): ActionButton
{
return $button->secondary();
}
use MoonShine\ActionButtons\ActionButton;
protected function modifyExportButton(ActionButton $button): ActionButton
{
return $button->secondary();
}
use MoonShine\ActionButtons\ActionButton;
protected function modifyExportButton(ActionButton $button): ActionButton
{
return $button->secondary();
}
use MoonShine\ActionButtons\ActionButton;
protected function modifyExportButton(ActionButton $button): ActionButton
{
return $button->secondary();
}

Переопределение
Метод getExportButton()
позволяет переопределить кнопку экспорта.
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Buttons\ExportButton;
public function getExportButton(): ActionButton
{
return ExportButton::for($this, export: $this->export());
}
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Buttons\ExportButton;
public function getExportButton(): ActionButton
{
return ExportButton::for($this, export: $this->export());
}
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Buttons\ExportButton;
public function getExportButton(): ActionButton
{
return ExportButton::for($this, export: $this->export());
}
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Buttons\ExportButton;
public function getExportButton(): ActionButton
{
return ExportButton::for($this, export: $this->export());
}
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Buttons\ExportButton;
public function getExportButton(): ActionButton
{
return ExportButton::for($this, export: $this->export());
}
Модификация
Метод modifyImportButton()
позволяет модифицировать кнопку импорта.
use MoonShine\ActionButtons\ActionButton;
protected function modifyImportButton(ActionButton $button): ActionButton
{
return $button->error();
}
use MoonShine\ActionButtons\ActionButton;
protected function modifyImportButton(ActionButton $button): ActionButton
{
return $button->error();
}
use MoonShine\ActionButtons\ActionButton;
protected function modifyImportButton(ActionButton $button): ActionButton
{
return $button->error();
}
use MoonShine\ActionButtons\ActionButton;
protected function modifyImportButton(ActionButton $button): ActionButton
{
return $button->error();
}
use MoonShine\ActionButtons\ActionButton;
protected function modifyImportButton(ActionButton $button): ActionButton
{
return $button->error();
}

Переопределение
Метод getImportButton()
позволяет переопределить кнопку импорта.
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Buttons\ImportButton;
public function getImportButton(): ActionButton
{
return ImportButton::for($this, import: $this->import());
}
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Buttons\ImportButton;
public function getImportButton(): ActionButton
{
return ImportButton::for($this, import: $this->import());
}
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Buttons\ImportButton;
public function getImportButton(): ActionButton
{
return ImportButton::for($this, import: $this->import());
}
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Buttons\ImportButton;
public function getImportButton(): ActionButton
{
return ImportButton::for($this, import: $this->import());
}
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Buttons\ImportButton;
public function getImportButton(): ActionButton
{
return ImportButton::for($this, import: $this->import());
}
Модификация
Метод modifyFiltersButton()
позволяет модифицировать кнопку фильтров.
use MoonShine\ActionButtons\ActionButton;
protected function modifyFiltersButton(ActionButton $button): ActionButton
{
return $button->error();
}
use MoonShine\ActionButtons\ActionButton;
protected function modifyFiltersButton(ActionButton $button): ActionButton
{
return $button->error();
}
use MoonShine\ActionButtons\ActionButton;
protected function modifyFiltersButton(ActionButton $button): ActionButton
{
return $button->error();
}
use MoonShine\ActionButtons\ActionButton;
protected function modifyFiltersButton(ActionButton $button): ActionButton
{
return $button->error();
}
use MoonShine\ActionButtons\ActionButton;
protected function modifyFiltersButton(ActionButton $button): ActionButton
{
return $button->error();
}

Переопределение
Метод getFiltersButton()
позволяет переопределить кнопку фильтров.
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Buttons\FiltersButton;
public function getFiltersButton(): ActionButton
{
return FiltersButton::for($this);
}
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Buttons\FiltersButton;
public function getFiltersButton(): ActionButton
{
return FiltersButton::for($this);
}
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Buttons\FiltersButton;
public function getFiltersButton(): ActionButton
{
return FiltersButton::for($this);
}
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Buttons\FiltersButton;
public function getFiltersButton(): ActionButton
{
return FiltersButton::for($this);
}
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Buttons\FiltersButton;
public function getFiltersButton(): ActionButton
{
return FiltersButton::for($this);
}
Метод getFormBuilderButtons()
позволяет добавить дополнительные кнопки в форму создания или редактирования.
namespace MoonShine\Resources;
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Resources\ModelResource;
class PostResource extends ModelResource
{
public function getFormBuilderButtons(): array
{
return [
ActionButton::make('Back', fn() => $this->indexPageUrl())->customAttributes(['class' => 'btn-lg'])
];
}
}
namespace MoonShine\Resources;
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Resources\ModelResource;
class PostResource extends ModelResource
{
//...
public function getFormBuilderButtons(): array
{
return [
ActionButton::make('Back', fn() => $this->indexPageUrl())->customAttributes(['class' => 'btn-lg'])
];
}
//...
}
namespace MoonShine\Resources;
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Resources\ModelResource;
class PostResource extends ModelResource
{
//...
public function getFormBuilderButtons(): array
{
return [
ActionButton::make('Back', fn() => $this->indexPageUrl())->customAttributes(['class' => 'btn-lg'])
];
}
//...
}
namespace MoonShine\Resources;
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Resources\ModelResource;
class PostResource extends ModelResource
{
//...
public function getFormBuilderButtons(): array
{
return [
ActionButton::make('Back', fn() => $this->indexPageUrl())->customAttributes(['class' => 'btn-lg'])
];
}
//...
}
namespace MoonShine\Resources;
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Resources\ModelResource;
class PostResource extends ModelResource
{
//...
public function getFormBuilderButtons(): array
{
return [
ActionButton::make('Back', fn() => $this->indexPageUrl())->customAttributes(['class' => 'btn-lg'])
];
}
//...
}

По умолчанию на странице индекса ресурса модели есть только кнопка создания.
Метод actions()
позволяет добавить дополнительные кнопки.
namespace MoonShine\Resources;
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Enums\JsEvent;
use MoonShine\Resources\ModelResource;
use MoonShine\Support\AlpineJs;
class PostResource extends ModelResource
{
public function actions(): array
{
return [
ActionButton::make('Refresh', '#')
->dispatchEvent(AlpineJs::event(JsEvent::TABLE_UPDATED, 'index-table'))
];
}
}
namespace MoonShine\Resources;
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Enums\JsEvent;
use MoonShine\Resources\ModelResource;
use MoonShine\Support\AlpineJs;
class PostResource extends ModelResource
{
//...
public function actions(): array
{
return [
ActionButton::make('Refresh', '#')
->dispatchEvent(AlpineJs::event(JsEvent::TABLE_UPDATED, 'index-table'))
];
}
//...
}
namespace MoonShine\Resources;
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Enums\JsEvent;
use MoonShine\Resources\ModelResource;
use MoonShine\Support\AlpineJs;
class PostResource extends ModelResource
{
//...
public function actions(): array
{
return [
ActionButton::make('Refresh', '#')
->dispatchEvent(AlpineJs::event(JsEvent::TABLE_UPDATED, 'index-table'))
];
}
//...
}
namespace MoonShine\Resources;
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Enums\JsEvent;
use MoonShine\Resources\ModelResource;
use MoonShine\Support\AlpineJs;
class PostResource extends ModelResource
{
//...
public function actions(): array
{
return [
ActionButton::make('Refresh', '#')
->dispatchEvent(AlpineJs::event(JsEvent::TABLE_UPDATED, 'index-table'))
];
}
//...
}
namespace MoonShine\Resources;
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Enums\JsEvent;
use MoonShine\Resources\ModelResource;
use MoonShine\Support\AlpineJs;
class PostResource extends ModelResource
{
//...
public function actions(): array
{
return [
ActionButton::make('Refresh', '#')
->dispatchEvent(AlpineJs::event(JsEvent::TABLE_UPDATED, 'index-table'))
];
}
//...
}

Метод buttons()
позволяет указать дополнительные кнопки, которые будут отображаться в таблице индекса, в формах создания и редактирования, а также на детальной странице, если они не переопределены для страниц соответствующими методами indexButton()
, formButtons()
и detailButtons()
.
namespace MoonShine\Resources;
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Resources\ModelResource;
class PostResource extends ModelResource
{
public function buttons(): array
{
return [
ActionButton::make('Link', '/endpoint')
];
}
}
namespace MoonShine\Resources;
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Resources\ModelResource;
class PostResource extends ModelResource
{
//...
public function buttons(): array
{
return [
ActionButton::make('Link', '/endpoint')
];
}
//...
}
namespace MoonShine\Resources;
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Resources\ModelResource;
class PostResource extends ModelResource
{
//...
public function buttons(): array
{
return [
ActionButton::make('Link', '/endpoint')
];
}
//...
}
namespace MoonShine\Resources;
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Resources\ModelResource;
class PostResource extends ModelResource
{
//...
public function buttons(): array
{
return [
ActionButton::make('Link', '/endpoint')
];
}
//...
}
namespace MoonShine\Resources;
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Resources\ModelResource;
class PostResource extends ModelResource
{
//...
public function buttons(): array
{
return [
ActionButton::make('Link', '/endpoint')
];
}
//...
}
Для добавления кнопок в таблицу индекса используйте метод indexButtons()
.
namespace MoonShine\Resources;
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Resources\ModelResource;
class PostResource extends ModelResource
{
public function indexButtons(): array
{
return [
ActionButton::make(
'Link',
fn(Model $item) => '/endpoint?id=' . $item->getKey()
)
];
}
}
namespace MoonShine\Resources;
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Resources\ModelResource;
class PostResource extends ModelResource
{
//...
public function indexButtons(): array
{
return [
ActionButton::make(
'Link',
fn(Model $item) => '/endpoint?id=' . $item->getKey()
)
];
}
//...
}
namespace MoonShine\Resources;
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Resources\ModelResource;
class PostResource extends ModelResource
{
//...
public function indexButtons(): array
{
return [
ActionButton::make(
'Link',
fn(Model $item) => '/endpoint?id=' . $item->getKey()
)
];
}
//...
}
namespace MoonShine\Resources;
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Resources\ModelResource;
class PostResource extends ModelResource
{
//...
public function indexButtons(): array
{
return [
ActionButton::make(
'Link',
fn(Model $item) => '/endpoint?id=' . $item->getKey()
)
];
}
//...
}
namespace MoonShine\Resources;
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Resources\ModelResource;
class PostResource extends ModelResource
{
//...
public function indexButtons(): array
{
return [
ActionButton::make(
'Link',
fn(Model $item) => '/endpoint?id=' . $item->getKey()
)
];
}
//...
}

Пример создания пользовательских кнопок для таблицы индекса в разделе Рецепты
Для массовых действий с элементами необходимо добавить метод bulk()
public function indexButtons(): array
{
return [
ActionButton::make('Link', '/endpoint')
->bulk()
];
}
public function indexButtons(): array
{
return [
ActionButton::make('Link', '/endpoint')
->bulk()
];
}
public function indexButtons(): array
{
return [
ActionButton::make('Link', '/endpoint')
->bulk()
];
}
public function indexButtons(): array
{
return [
ActionButton::make('Link', '/endpoint')
->bulk()
];
}
public function indexButtons(): array
{
return [
ActionButton::make('Link', '/endpoint')
->bulk()
];
}

Переопределение группы
Если вы хотите полностью изменить все кнопки элементов в таблице индекса, то необходимо переопределить метод getIndexItemButtons()
в ресурсе.
namespace MoonShine\Resources;
use MoonShine\Resources\ModelResource;
class PostResource extends ModelResource
{
public function getIndexItemButtons(): array
{
return [
...$this->getIndexButtons(),
$this->getDetailButton(
isAsync: $this->isAsync()
),
$this->getEditButton(
isAsync: $this->isAsync()
),
$this->getDeleteButton(
redirectAfterDelete: $this->redirectAfterDelete(),
isAsync: $this->isAsync()
),
$this->getMassDeleteButton(
redirectAfterDelete: $this->redirectAfterDelete(),
isAsync: $this->isAsync()
),
];
}
}
namespace MoonShine\Resources;
use MoonShine\Resources\ModelResource;
class PostResource extends ModelResource
{
//...
public function getIndexItemButtons(): array
{
return [
...$this->getIndexButtons(),
$this->getDetailButton(
isAsync: $this->isAsync()
),
$this->getEditButton(
isAsync: $this->isAsync()
),
$this->getDeleteButton(
redirectAfterDelete: $this->redirectAfterDelete(),
isAsync: $this->isAsync()
),
$this->getMassDeleteButton(
redirectAfterDelete: $this->redirectAfterDelete(),
isAsync: $this->isAsync()
),
];
}
//...
}
namespace MoonShine\Resources;
use MoonShine\Resources\ModelResource;
class PostResource extends ModelResource
{
//...
public function getIndexItemButtons(): array
{
return [
...$this->getIndexButtons(),
$this->getDetailButton(
isAsync: $this->isAsync()
),
$this->getEditButton(
isAsync: $this->isAsync()
),
$this->getDeleteButton(
redirectAfterDelete: $this->redirectAfterDelete(),
isAsync: $this->isAsync()
),
$this->getMassDeleteButton(
redirectAfterDelete: $this->redirectAfterDelete(),
isAsync: $this->isAsync()
),
];
}
//...
}
namespace MoonShine\Resources;
use MoonShine\Resources\ModelResource;
class PostResource extends ModelResource
{
//...
public function getIndexItemButtons(): array
{
return [
...$this->getIndexButtons(),
$this->getDetailButton(
isAsync: $this->isAsync()
),
$this->getEditButton(
isAsync: $this->isAsync()
),
$this->getDeleteButton(
redirectAfterDelete: $this->redirectAfterDelete(),
isAsync: $this->isAsync()
),
$this->getMassDeleteButton(
redirectAfterDelete: $this->redirectAfterDelete(),
isAsync: $this->isAsync()
),
];
}
//...
}
namespace MoonShine\Resources;
use MoonShine\Resources\ModelResource;
class PostResource extends ModelResource
{
//...
public function getIndexItemButtons(): array
{
return [
...$this->getIndexButtons(),
$this->getDetailButton(
isAsync: $this->isAsync()
),
$this->getEditButton(
isAsync: $this->isAsync()
),
$this->getDeleteButton(
redirectAfterDelete: $this->redirectAfterDelete(),
isAsync: $this->isAsync()
),
$this->getMassDeleteButton(
redirectAfterDelete: $this->redirectAfterDelete(),
isAsync: $this->isAsync()
),
];
}
//...
}
Чтобы добавить кнопки на страницу с формой, используйте метод formButtons()
.
namespace MoonShine\Resources;
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Resources\ModelResource;
class PostResource extends ModelResource
{
public function formButtons(): array
{
return [
ActionButton::make('Link')->method('updateSomething')
];
}
}
namespace MoonShine\Resources;
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Resources\ModelResource;
class PostResource extends ModelResource
{
//...
public function formButtons(): array
{
return [
ActionButton::make('Link')->method('updateSomething')
];
}
//...
}
namespace MoonShine\Resources;
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Resources\ModelResource;
class PostResource extends ModelResource
{
//...
public function formButtons(): array
{
return [
ActionButton::make('Link')->method('updateSomething')
];
}
//...
}
namespace MoonShine\Resources;
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Resources\ModelResource;
class PostResource extends ModelResource
{
//...
public function formButtons(): array
{
return [
ActionButton::make('Link')->method('updateSomething')
];
}
//...
}
namespace MoonShine\Resources;
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Resources\ModelResource;
class PostResource extends ModelResource
{
//...
public function formButtons(): array
{
return [
ActionButton::make('Link')->method('updateSomething')
];
}
//...
}

Переопределение группы
Если вы хотите полностью изменить все кнопки элемента на странице формы, то необходимо переопределить метод getFormItemButtons()
в ресурсе.
namespace MoonShine\Resources;
use MoonShine\Resources\ModelResource;
class PostResource extends ModelResource
{
public function getFormItemButtons(): array
{
return [
...$this->getFormButtons(),
$this->getDetailButton(),
$this->getDeleteButton(
redirectAfterDelete: $this->redirectAfterDelete(),
isAsync: false
),
];
}
}
namespace MoonShine\Resources;
use MoonShine\Resources\ModelResource;
class PostResource extends ModelResource
{
//...
public function getFormItemButtons(): array
{
return [
...$this->getFormButtons(),
$this->getDetailButton(),
$this->getDeleteButton(
redirectAfterDelete: $this->redirectAfterDelete(),
isAsync: false
),
];
}
//...
}
namespace MoonShine\Resources;
use MoonShine\Resources\ModelResource;
class PostResource extends ModelResource
{
//...
public function getFormItemButtons(): array
{
return [
...$this->getFormButtons(),
$this->getDetailButton(),
$this->getDeleteButton(
redirectAfterDelete: $this->redirectAfterDelete(),
isAsync: false
),
];
}
//...
}
namespace MoonShine\Resources;
use MoonShine\Resources\ModelResource;
class PostResource extends ModelResource
{
//...
public function getFormItemButtons(): array
{
return [
...$this->getFormButtons(),
$this->getDetailButton(),
$this->getDeleteButton(
redirectAfterDelete: $this->redirectAfterDelete(),
isAsync: false
),
];
}
//...
}
namespace MoonShine\Resources;
use MoonShine\Resources\ModelResource;
class PostResource extends ModelResource
{
//...
public function getFormItemButtons(): array
{
return [
...$this->getFormButtons(),
$this->getDetailButton(),
$this->getDeleteButton(
redirectAfterDelete: $this->redirectAfterDelete(),
isAsync: false
),
];
}
//...
}
Чтобы добавить кнопки на страницу детального просмотра, используйте метод detailButtons()
.
namespace MoonShine\Resources;
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Resources\ModelResource;
class PostResource extends ModelResource
{
public function detailButtons(): array
{
return [
ActionButton::make('Link', '/endpoint')
];
}
}
namespace MoonShine\Resources;
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Resources\ModelResource;
class PostResource extends ModelResource
{
//...
public function detailButtons(): array
{
return [
ActionButton::make('Link', '/endpoint')
];
}
//...
}
namespace MoonShine\Resources;
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Resources\ModelResource;
class PostResource extends ModelResource
{
//...
public function detailButtons(): array
{
return [
ActionButton::make('Link', '/endpoint')
];
}
//...
}
namespace MoonShine\Resources;
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Resources\ModelResource;
class PostResource extends ModelResource
{
//...
public function detailButtons(): array
{
return [
ActionButton::make('Link', '/endpoint')
];
}
//...
}
namespace MoonShine\Resources;
use MoonShine\ActionButtons\ActionButton;
use MoonShine\Resources\ModelResource;
class PostResource extends ModelResource
{
//...
public function detailButtons(): array
{
return [
ActionButton::make('Link', '/endpoint')
];
}
//...
}

Переопределение группы
Если вы хотите полностью изменить все кнопки элемента на странице детального просмотра, то необходимо переопределить метод getDetailItemButtons()
в ресурсе.
namespace MoonShine\Resources;
use MoonShine\Resources\ModelResource;
class PostResource extends ModelResource
{
public function getDetailItemButtons(): array
{
return [
...$this->getDetailButtons(),
$this->getEditButton(
isAsync: $this->isAsync(),
),
$this->getDeleteButton(
redirectAfterDelete: $this->redirectAfterDelete(),
isAsync: false
),
];
}
}
namespace MoonShine\Resources;
use MoonShine\Resources\ModelResource;
class PostResource extends ModelResource
{
//...
public function getDetailItemButtons(): array
{
return [
...$this->getDetailButtons(),
$this->getEditButton(
isAsync: $this->isAsync(),
),
$this->getDeleteButton(
redirectAfterDelete: $this->redirectAfterDelete(),
isAsync: false
),
];
}
//...
}
namespace MoonShine\Resources;
use MoonShine\Resources\ModelResource;
class PostResource extends ModelResource
{
//...
public function getDetailItemButtons(): array
{
return [
...$this->getDetailButtons(),
$this->getEditButton(
isAsync: $this->isAsync(),
),
$this->getDeleteButton(
redirectAfterDelete: $this->redirectAfterDelete(),
isAsync: false
),
];
}
//...
}
namespace MoonShine\Resources;
use MoonShine\Resources\ModelResource;
class PostResource extends ModelResource
{
//...
public function getDetailItemButtons(): array
{
return [
...$this->getDetailButtons(),
$this->getEditButton(
isAsync: $this->isAsync(),
),
$this->getDeleteButton(
redirectAfterDelete: $this->redirectAfterDelete(),
isAsync: false
),
];
}
//...
}
namespace MoonShine\Resources;
use MoonShine\Resources\ModelResource;
class PostResource extends ModelResource
{
//...
public function getDetailItemButtons(): array
{
return [
...$this->getDetailButtons(),
$this->getEditButton(
isAsync: $this->isAsync(),
),
$this->getDeleteButton(
redirectAfterDelete: $this->redirectAfterDelete(),
isAsync: false
),
];
}
//...
}