От классов можно создавать экземпляры страниц и регистрировать их в админ-панели.
# Make
Для создания экземпляра страницы используется статический метод make()
:
make( ?string $title = null, ?string $alias = null, ?ResourceContract $resource = null)
title
- заголовок страницы;alias
- алиас для url страницы;resource
- ресурс, к которому принадлежит страница.
use App\MoonShine\Pages\CustomPage; //... CustomPage::make('Custom page', 'custom_page') //...
# Объявление страниц в системе
Зарегистрировать страницу в системе и сразу добавить ссылку на нее в навигационное меню
можно через сервис провайдер MoonShineServiceProvider
:
namespace App\Providers; use App\MoonShine\Pages\CustomPage; use MoonShine\Providers\MoonShineApplicationServiceProvider; class MoonShineServiceProvider extends MoonShineApplicationServiceProvider{ //... protected function menu(): array { return [ MenuItem::make('Custom page', CustomPage::make('Custom page', 'custom_page')) ]; } //...}
О расширенных настройках можно узнать в разделе
Меню
.
Если вам необходимо только зарегистрировать страницу в системе без добавления в навигационное меню,
то необходимо воспользоваться методом pages()
:
namespace App\Providers; use App\MoonShine\Pages\CustomPage; use MoonShine\Providers\MoonShineApplicationServiceProvider; class MoonShineServiceProvider extends MoonShineApplicationServiceProvider{ public function pages(): array { return [ CustomPage::make('Title page', 'custom_page') ]; } //...}
# Заголовок/Подзаголовок
Метод setTitle()
позволяет изменить заголовок страницы,
а метод setSubTitle()
- подзаголовок.
setTitle(string $title)
setSubTitle(string $subtitle)
use App\MoonShine\Pages\CustomPage; //... public function pages(): array{ return [ CustomPage::make('Title page', 'custom_page') ->setTitle('New title') ->setSubTitle('Subtitle') ];} //...
# Layout
Метод setLayout()
позволяет изменить шаблон Layout экземпляра страницы.
setLayout(string $layout)
use App\MoonShine\Pages\CustomPage; //... public function pages(): array{ return [ CustomPage::make('Title page', 'custom_page') ->setLayout('custom_layouts.app') ];} //...
# Breadcrumbs
Метод setBreadcrumbs()
позволяет изменить хлебные крошки у страницы.
use App\MoonShine\Pages\CustomPage; //... public function pages(): array{ return [ CustomPage::make('Title page', 'custom_page') ->setBreadcrumbs([ '#' => $this->title() ]) ];} //...
# Alias
Метод alias()
позволяет изменить алиас для инстанса страницы.
alias(string $alias)
use App\MoonShine\Pages\CustomPage; //... public function pages(): array{ return [ CustomPage::make('Title page') ->alias('custom-page') ];} //...
# Быстрая страница
Если необходимо добавить страницу не создавая класс, а просто указав blade view, то рекомендуем воспользоваться ViewPage
MenuItem::make( 'Custom', ViewPage::make() ->setTitle('Hello') ->setLayout('custom_layout') ->setContentView('my-form', ['param' => 'value'])),
# Render
Вы можете отображать быструю страницу и вне MoonShine, скажем просто вернув ее в Controller
class HomeController extends Controller{ public function __invoke(Request $request): Page { $articles = Article::query() ->published() ->latest() ->take(6) ->get(); return ViewPage::make() ->setTitle('Welcome') ->setLayout('layouts.app') ->setContentView('welcome', ['articles' => $articles]); }}