Страницы

Вы просматриваете документацию старой версии MoonShine. Рассмотрите возможность обновления вашего проекта до MoonShine 2.x.

# Основы

Можно создавать свои пустые страницы на основе blade view и UI components , стилизовать по своему, а также организовывать какую-то логику.

use Illuminate\Support\ServiceProvider;
use MoonShine\Menu\MenuItem;
use MoonShine\MoonShine;
use MoonShine\Resources\CustomPage;
 
class MoonShineServiceProvider extends ServiceProvider
{
public function boot(): void
{
app(MoonShine::class)->menu([
MenuItem::make(
'Page title',
CustomPage::make('Page title', 'slug', 'view', fn() => [])
)
]);
}
}

Первый аргумент - заголовок страницы.

Второй аргумент - slug страницы для формирования url.

Третий аргумент - ваша кастомная blade view, которая располагается в resources/views.

Четвертый аргумент - данные, необходимые для view.

Можно использовать blade components у которых есть класс обработчик, чтобы добавить свою логику.

# Без заголовка

Иногда не требуется вывод заголовка на кастомной странице, поэтому его можно скрыть используя метод withoutTitle.

use Illuminate\Support\ServiceProvider;
use MoonShine\Menu\MenuItem;
use MoonShine\MoonShine;
use MoonShine\Resources\CustomPage;
 
class MoonShineServiceProvider extends ServiceProvider
{
public function boot(): void
{
app(MoonShine::class)->menu([
MenuItem::make(
'Page title',
CustomPage::make('Page title', 'slug', 'view', fn() => [])
->withoutTitle()
)
]);
}
}

# Layout

Можно использовать кастомный layout, для этого необходимо указать путь до него в соответствующем методе.

use Illuminate\Support\ServiceProvider;
use MoonShine\Menu\MenuItem;
use MoonShine\MoonShine;
use MoonShine\Resources\CustomPage;
 
class MoonShineServiceProvider extends ServiceProvider
{
public function boot(): void
{
app(MoonShine::class)->menu([
MenuItem::make(
'Page title',
CustomPage::make('Page title', 'slug', 'view', fn() => [])
->layout('path')
)
]);
}
}

# class CustomPage

Страницы можно создавать через класс, для этого достаточно выполнить команду:

php artisan moonshine:page ExamplePage

В результате будет создан ExamplePage класс, который будет основой кастомной страницы. Располагается он по умолчанию в директории app/MoonShine/Pages.

При выполнении команды можно сразу задать для вашей страницы алиас, заголовок и blade шаблон.

php artisan moonshine:page ExamplePage --alias="example" --title="Example Page" --view="pages.example"

После создания страницы, ее можно добавить в меню.

use Illuminate\Support\ServiceProvider;
use MoonShine\Pages\ExamplePage;
 
class MoonShineServiceProvider extends ServiceProvider
{
public function boot(): void
{
app(MoonShine::class)->menu([
MenuItem::make('Example', new ExamplePage())
]);
}
}