Make instance

От классов можно создавать экземпляры страниц и регистрировать их в админ-панели.

# 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')
];
}
 
//...

Метод 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]);
}
}