Первые шаги

Конфигурация

Конфиг

use MoonShine\Exceptions\MoonShineNotFoundException;
use MoonShine\Forms\LoginForm;
use MoonShine\Http\Middleware\Authenticate;
use MoonShine\Http\Middleware\SecurityHeadersMiddleware;
use MoonShine\Models\MoonshineUser;
use MoonShine\MoonShineLayout;
use MoonShine\Pages\ProfilePage;
 
return [
# Директория, где расположены ресурсы
'dir' => 'app/MoonShine',
# Если директория изменена, пространство имен также должно быть изменено в соответствии с psr-4
'namespace' => 'App\MoonShine',
 
# Заголовок панели администратора
'title' => env('MOONSHINE_TITLE', 'MoonShine'),
# Вы можете изменить логотип, указав путь (пример - /images/logo.svg)
'logo' => env('MOONSHINE_LOGO'),
'logo_small' => env('MOONSHINE_LOGO_SMALL'),
 
'route' => [
# Если домен отличается от домена сайта
'domain' => env('MOONSHINE_URL', ''),
# Какой путь будет использоваться для доступа к панели управления
# Если значение оставлено пустым, панель будет доступна с /
'prefix' => env('MOONSHINE_ROUTE_PREFIX', 'admin'),
# Имя маршрута домашней страницы
'index' => 'moonshine.index',
# Префикс формирования url для страниц
'single_page_prefix' => 'page',
# Группы промежуточного ПО в панели
'middlewares' => [
SecurityHeadersMiddleware::class,
],
# Вы можете изменить исключение для 404 (для ModelNotFound нужно реализовать самостоятельно)
'notFoundHandler' => MoonShineNotFoundException::class,
],
 
# Если вы хотите заменить MoonshineUser своей моделью, вы можете отключить стандартные миграции
'use_migrations' => true,
# Уведомления Вкл/Выкл
'use_notifications' => true,
# Вкл/Выкл переключатель светлой/темной темы
'use_theme_switcher' => true,
 
# Класс для отрисовки шаблона главной страницы
'layout' => MoonShineLayout::class,
 
# Диск файловой системы по умолчанию
'disk' => 'public',
 
'disk_options' => [],
 
'cache' => 'file',
 
'assets' => [
'js' => [
'script_attributes' => [
'defer',
]
],
'css' => [
'link_attributes' => [
'rel' => 'stylesheet',
]
]
],
 
'forms' => [
# форма аутентификации
'login' => LoginForm::class
],
 
'pages' => [
# Страница панели управления, страница по умолчанию создается при установке MoonShine
'dashboard' => App\MoonShine\Pages\Dashboard::class,
# Страница профиля
'profile' => ProfilePage::class
],
 
# Импорт и экспорт по умолчанию из ModelResource
'model_resources' => [
'default_with_import' => true,
'default_with_export' => true,
],
 
'auth' => [
# Вкл/Выкл аутентификацию. Если false, панель будет доступна всем
'enable' => true,
'middleware' => Authenticate::class,
'fields' => [
'username' => 'email',
'password' => 'password',
'name' => 'name',
'avatar' => 'avatar',
],
# Если вы используете собственный guard, провайдер
'guard' => 'moonshine',
'guards' => [
'moonshine' => [
'driver' => 'session',
'provider' => 'moonshine',
],
],
'providers' => [
'moonshine' => [
'driver' => 'eloquent',
'model' => MoonshineUser::class,
],
],
],
# Возможные варианты перевода
'locales' => [
'en',
'ru',
],
 
'global_search' => [
// User::class
],
 
'tinymce' => [
# Корневой каталог файлового менеджера, подробности в разделе Fields
'file_manager' => false,
'token' => env('MOONSHINE_TINYMCE_TOKEN', ''),
'version' => env('MOONSHINE_TINYMCE_VERSION', '6'),
],
 
# Аутентификация через социальные сети и socialite, перечислите драйверы и укажите логотип
'socialite' => [
// 'driver' => 'путь_к_изображению_для_кнопки'
],
];
use MoonShine\Exceptions\MoonShineNotFoundException;
use MoonShine\Forms\LoginForm;
use MoonShine\Http\Middleware\Authenticate;
use MoonShine\Http\Middleware\SecurityHeadersMiddleware;
use MoonShine\Models\MoonshineUser;
use MoonShine\MoonShineLayout;
use MoonShine\Pages\ProfilePage;
 
return [
# Директория, где расположены ресурсы
'dir' => 'app/MoonShine',
# Если директория изменена, пространство имен также должно быть изменено в соответствии с psr-4
'namespace' => 'App\MoonShine',
 
# Заголовок панели администратора
'title' => env('MOONSHINE_TITLE', 'MoonShine'),
# Вы можете изменить логотип, указав путь (пример - /images/logo.svg)
'logo' => env('MOONSHINE_LOGO'),
'logo_small' => env('MOONSHINE_LOGO_SMALL'),
 
'route' => [
# Если домен отличается от домена сайта
'domain' => env('MOONSHINE_URL', ''),
# Какой путь будет использоваться для доступа к панели управления
# Если значение оставлено пустым, панель будет доступна с /
'prefix' => env('MOONSHINE_ROUTE_PREFIX', 'admin'),
# Имя маршрута домашней страницы
'index' => 'moonshine.index',
# Префикс формирования url для страниц
'single_page_prefix' => 'page',
# Группы промежуточного ПО в панели
'middlewares' => [
SecurityHeadersMiddleware::class,
],
# Вы можете изменить исключение для 404 (для ModelNotFound нужно реализовать самостоятельно)
'notFoundHandler' => MoonShineNotFoundException::class,
],
 
# Если вы хотите заменить MoonshineUser своей моделью, вы можете отключить стандартные миграции
'use_migrations' => true,
# Уведомления Вкл/Выкл
'use_notifications' => true,
# Вкл/Выкл переключатель светлой/темной темы
'use_theme_switcher' => true,
 
# Класс для отрисовки шаблона главной страницы
'layout' => MoonShineLayout::class,
 
# Диск файловой системы по умолчанию
'disk' => 'public',
 
'disk_options' => [],
 
'cache' => 'file',
 
'assets' => [
'js' => [
'script_attributes' => [
'defer',
]
],
'css' => [
'link_attributes' => [
'rel' => 'stylesheet',
]
]
],
 
'forms' => [
# форма аутентификации
'login' => LoginForm::class
],
 
'pages' => [
# Страница панели управления, страница по умолчанию создается при установке MoonShine
'dashboard' => App\MoonShine\Pages\Dashboard::class,
# Страница профиля
'profile' => ProfilePage::class
],
 
# Импорт и экспорт по умолчанию из ModelResource
'model_resources' => [
'default_with_import' => true,
'default_with_export' => true,
],
 
'auth' => [
# Вкл/Выкл аутентификацию. Если false, панель будет доступна всем
'enable' => true,
'middleware' => Authenticate::class,
'fields' => [
'username' => 'email',
'password' => 'password',
'name' => 'name',
'avatar' => 'avatar',
],
# Если вы используете собственный guard, провайдер
'guard' => 'moonshine',
'guards' => [
'moonshine' => [
'driver' => 'session',
'provider' => 'moonshine',
],
],
'providers' => [
'moonshine' => [
'driver' => 'eloquent',
'model' => MoonshineUser::class,
],
],
],
# Возможные варианты перевода
'locales' => [
'en',
'ru',
],
 
'global_search' => [
// User::class
],
 
'tinymce' => [
# Корневой каталог файлового менеджера, подробности в разделе Fields
'file_manager' => false,
'token' => env('MOONSHINE_TINYMCE_TOKEN', ''),
'version' => env('MOONSHINE_TINYMCE_VERSION', '6'),
],
 
# Аутентификация через социальные сети и socialite, перечислите драйверы и укажите логотип
'socialite' => [
// 'driver' => 'путь_к_изображению_для_кнопки'
],
];

Для базового использования достаточно отредактировать следующие параметры:

// ...
 
return [
// ...
 
'title' => env('MOONSHINE_TITLE', 'MoonShine'),
'logo' => env('MOONSHINE_LOGO', ''),
'logo_small' => env('MOONSHINE_LOGO_SMALL'),
 
'route' => [
'prefix' => env('MOONSHINE_ROUTE_PREFIX', 'admin'),
],
 
// ...
];
// ...
 
return [
// ...
 
'title' => env('MOONSHINE_TITLE', 'MoonShine'),
'logo' => env('MOONSHINE_LOGO', ''),
'logo_small' => env('MOONSHINE_LOGO_SMALL'),
 
'route' => [
'prefix' => env('MOONSHINE_ROUTE_PREFIX', 'admin'),
],
 
// ...
];

Домашняя страница

Если вам нужно переопределить домашнюю страницу в панели администрирования MoonShine, это можно сделать с помощью статического метода home() класса MoonShine в сервис-провайдере MoonShineServiceProvider.

home(string|Closure $homeClass)
home(string|Closure $homeClass)
use App\MoonShine\Pages\CustomPage;
use App\MoonShine\Resources\PostResource;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
use MoonShine\MoonShine;
 
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
public function register(): void
{
moonshine()->home(CustomPage::class);
// или
moonshine()->home(PostResource::class);
// или
moonshine()->home(function () {
return PostResource::class;
});
}
 
//...
}
use App\MoonShine\Pages\CustomPage;
use App\MoonShine\Resources\PostResource;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
use MoonShine\MoonShine;
 
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
public function register(): void
{
moonshine()->home(CustomPage::class);
// или
moonshine()->home(PostResource::class);
// или
moonshine()->home(function () {
return PostResource::class;
});
}
 
//...
}