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

# Config

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',
# При изменении директории необходимо поменять и namespace согласно 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 в панели
'middlewares' => [
SecurityHeadersMiddleware::class,
],
# Можно поменять исключение для 404 (для ModelNotFound нужно реализовать самостоятельно)
'notFoundHandler' => MoonShineNotFoundException::class,
],
 
# Если вы хотите заменить MoonshineUser на свою модель, то можно отключить дефолтные миграции
'use_migrations' => true,
# Вкл/Выкл уведомления
'use_notifications' => true,
# Вкл/Выкл переключатель светлой/тёмной темы
'use_theme_switcher' => true,
 
# Class для рендеринга основного шаблона страницы
'layout' => MoonShineLayout::class,
 
# Filesystem Disk по умолчанию
'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, provider
'guard' => 'moonshine',
'guards' => [
'moonshine' => [
'driver' => 'session',
'provider' => 'moonshine',
],
],
'providers' => [
'moonshine' => [
'driver' => 'eloquent',
'model' => MoonshineUser::class,
],
],
],
# Возможные варианты переводов
'locales' => [
'en',
'ru',
],
 
'global_search' => [
// User::class
],
 
'tinymce' => [
# Роут файлового менеджера, подробности в разделе Поля
'file_manager' => false,
'token' => env('MOONSHINE_TINYMCE_TOKEN', ''),
'version' => env('MOONSHINE_TINYMCE_VERSION', '6'),
],
 
# Аутентификация через соц. сети и socialite, перечисляем драйверы и указываем логотип
'socialite' => [
// 'driver' => 'path_to_image_for_button'
],
];

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

// ...
 
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)
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);
// or
moonshine()->home(PostResource::class);
// or
moonshine()->home(function () {
return PostResource::class;
});
}
 
//...
 
}