- Основы
- Кнопка создания
- Кнопка детального просмотра
- Кнопка редактирования
- Кнопка удаления
- Кнопка массового удаления
- Кнопка фильтров
- Кнопки индексной страницы
- Кнопки индексной таблицы
- Кнопки страницы формы
- Кнопки страницы детального просмотра
Основы
Кнопки отображаются на страницах ресурса: индексная страница, страницы с формой (создание / редактирование) и детальная страница. Они отвечают за основные действия с элементами и являются компонентами ActionButton.
В MoonShine есть множество методов, позволяющих переопределить у ресурса как отдельную кнопку, так и всю группу.
Более подробная информация о компоненте ActionButton.
Кнопки для создания, просмотра, редактирования, удаления и массового удаления размещены в отдельных классах,
чтобы применить к ним все необходимые методы и тем самым устранить дублирование, поскольку эти кнопки также используются в HasMany
, BelongsToMany
и т.д.
Кнопка создания
Метод modifyCreateButton()
позволяет модифицировать кнопку создания нового элемента.
use MoonShine\Contracts\UI\ActionButtonContract; protected function modifyCreateButton(ActionButtonContract $button): ActionButtonContract{ return $button->error();}
Так же, вы можете переопределить кнопку.
use MoonShine\Contracts\UI\ActionButtonContract;use MoonShine\UI\Components\ActionButton; protected function modifyCreateButton(ActionButtonContract $button): ActionButtonContract{ return ActionButton::make('Create');}
Кнопка детального просмотра
Метод modifyDetailButton()
позволяет модифицировать или переопределить кнопку детального просмотра элемента.
use MoonShine\Contracts\UI\ActionButtonContract; protected function modifyDetailButton(ActionButtonContract $button): ActionButtonContract{ return $button->warning();}
Кнопка редактирования
Метод modifyEditButton()
позволяет модифицировать или переопределить кнопку редактирования элемента.
use MoonShine\Contracts\UI\ActionButtonContract; protected function modifyEditButton(ActionButtonContract $button): ActionButtonContract{ return $button->icon('pencil-square');}
Кнопка удаления
Метод modifyDeleteButton()
позволяет модифицировать или переопределить кнопку удаления элемента.
use MoonShine\Contracts\UI\ActionButtonContract; protected function modifyDeleteButton(ActionButtonContract $button): ActionButtonContract{ return $button->icon('x-mark');}
Кнопка массового удаления
Метод modifyMassDeleteButton()
позволяет модифицировать или переопределить кнопку массового удаления.
use MoonShine\Contracts\UI\ActionButtonContract; protected function modifyMassDeleteButton(ActionButtonContract $button): ActionButtonContract{ return $button->icon('x-mark');}
Кнопка фильтров
Метод modifyFiltersButton()
позволяет модифицировать или переопределить кнопку фильтров.
use MoonShine\Contracts\UI\ActionButtonContract; protected function modifyFiltersButton(ActionButtonContract $button): ActionButtonContract{ return $button->error();}
Кнопки индексной страницы
По умолчанию на странице индекса ресурса модели есть только кнопка создания.
Метод topButtons()
позволяет добавить дополнительные кнопки.
use MoonShine\Support\AlpineJs;use MoonShine\Support\Enums\JsEvent;use MoonShine\Support\ListOf;use MoonShine\UI\Components\ActionButton; protected function topButtons(): ListOf{ return parent::topButtons() ->add( ActionButton::make('Refresh', '#') ->dispatchEvent( AlpineJs::event(JsEvent::TABLE_UPDATED, $this->getListComponentName()) ) );}
Кнопки индексной таблицы
Для добавления кнопок в таблицу индекса используйте метод indexButtons()
.
use Illuminate\Database\Eloquent\Model;use MoonShine\UI\Components\ActionButton;use MoonShine\Support\ListOf; protected function indexButtons(): ListOf{ return parent::indexButtons() ->prepend( ActionButton::make( 'Link', fn(Model $item) => '/endpoint?id=' . $item->getKey() ) );}
Для массовых действий с элементами необходимо добавить метод bulk()
.
use MoonShine\UI\Components\ActionButton;use MoonShine\Support\ListOf; protected function indexButtons(): ListOf{ return parent::indexButtons() ->prepend( ActionButton::make('Link', '/endpoint') ->bulk() );}
Кнопки страницы формы
Чтобы добавить кнопки на страницу с формой, используйте метод formButtons()
.
use MoonShine\UI\Components\ActionButton;use MoonShine\Support\ListOf; protected function formButtons(): ListOf{ return parent::formButtons() ->add( ActionButton::make('Link')->method('updateSomething') );}
Метод formBuilderButtons()
позволяет добавить дополнительные кнопки непосредственно в форму создания или редактирования.
use MoonShine\UI\Components\ActionButton;use MoonShine\Support\ListOf; protected function formBuilderButtons(): ListOf{ return parent::formBuilderButtons() ->add( ActionButton::make('Back', fn() => $this->getIndexPageUrl())->class('btn-lg') );}
Кнопки страницы детального просмотра
Чтобы добавить кнопки на страницу детального просмотра, используйте метод detailButtons()
.
use MoonShine\UI\Components\ActionButton;use MoonShine\Support\ListOf; protected function detailButtons(): ListOf{ return parent::detailButtons() ->add(ActionButton::make('Link', '/endpoint'));}