- Описание
- Условные методы
- Изменение отображения
- Хук до рендера
- Ассеты
- Трейт Macroable
- Кастомный компонент
Описание
Практически всё в MoonShine это компоненты.
Сами MoonShineComponent
являются Blade компонентами и содержат дополнительные удобные методы для взаимодействия в административной панели.
Условные методы
Отображать компонент можно по условию, воспользовавшись методом canSee()
.
Box::make() ->canSee(function (Box $ctx) { return true; })
Метод when()
реализует fluent interface и выполнит callback, когда первый аргумент, переданный методу, имеет значение true.
when( $value = null, ?callable $callback = null, ?callable $default = null,)
Box::make() ->when(fn() => true, fn(Box $ctx) => $ctx)
Метод unless()
обратный методу when()
.
unless( $value = null, ?callable $callback = null, ?callable $default = null,)
Изменение отображения
Когда необходимо изменить view с помощью fluent interface можно воспользоваться методом customView()
.
customView( string $view, array $data = [])
Box::make('Title', []) ->customView('component.my-custom-block')
Хук до рендера
Если вам необходимо получить доступ к компоненту непосредственно перед рендером, для этого можно воспользоваться методом onBeforeRender()
.
/** * @param Closure(static $ctx): void $onBeforeRender */onBeforeRender(Closure $onBeforeRender)
Box::make('Title', []) ->onBeforeRender(function(Box $ctx) { // ... })
Ассеты
Для добавления ассетов на лету можно использовать метод addAssets()
.
Box::make() ->addAssets([ new Css(Vite::asset('resources/css/block.css')) ])
Если вы реализуете собственный компонент, то объявить набор ассетов в нем можно двумя способами.
- Через метод
assets()
:
/** * @return list<AssetElementContract> */protected function assets(): array{ return [ Js::make('/js/custom.js'), Css::make('/css/styles.css'), ];}
- Через метод
booted()
:
protected function booted(): void{ parent::booted(); $this->getAssetManager() ->add(Css::make('/css/app.css')) ->append(Js::make('/js/app.js'));}
Трейт Macroable
Всем компонентам доступен трейт Illuminate\Support\Traits\Macroable
с методами mixin()
и macro()
.
С помощью этого трейта вы можете расширять возможности компонентов, добавляя в них новый функционал без использования наследования.
MoonShineComponent::macro('myMethod', fn() => /*реализация*/) Box::make()->myMethod()
или
// для всехMoonShineComponent::mixin(new MyNewMethods()) // для конкретногоBox::mixin(new MyNewMethods())
Кастомный компонент
Вы можете создать собственный компонент, со своим view и логикой и использовать его в административной панели MoonShine. Для этого воспользуйтесь командой:
php artisan moonshine:component
О всех поддерживаемых опциях можно узнать в разделе Команды.