MoonShine предоставляет гибкие возможности для конфигурации вашего приложения.
В этом разделе мы рассмотрим два основных способа конфигурации и основные настройки.
MoonShine можно настроить двумя способами:
Через файл конфигурации config/moonshine.php
Через MoonShineServiceProvider
с использованием класса MoonShineConfigurator
Файл config/moonshine.php
содержит все доступные настройки MoonShine . Вы можете изменять эти настройки напрямую в файле.
Пример содержимого файла moonshine.php
:
return [
'title' => env('MOONSHINE_TITLE', 'MoonShine'),
'logo' => '/assets/logo.png',
'logo_small' => '/assets/logo-small.svg',
'use_migrations' => true,
'use_notifications' => true,
'use_database_notifications' => true,
'use_profile' => true,
'use_routes' => true,
'domain' => env('MOONSHINE_DOMAIN'),
'prefix' => 'admin',
'middleware' => [
],
'auth' => [
'enabled' => true,
'guard' => 'moonshine',
'middleware' => Authenticate::class,
],
'layout' => \MoonShine\Laravel\Layouts\AppLayout::class,
'locale' => 'en',
'locales' => ['en', 'ru'],
];
return [
'title' => env ( 'MOONSHINE_TITLE' , 'MoonShine' ),
'logo' => '/assets/logo.png' ,
'logo_small' => '/assets/logo-small.svg' ,
'use_migrations' => true ,
'use_notifications' => true ,
'use_database_notifications' => true ,
'use_profile' => true ,
'use_routes' => true ,
'domain' => env ( 'MOONSHINE_DOMAIN' ),
'prefix' => 'admin' ,
'middleware' => [
// ...
],
'auth' => [
'enabled' => true ,
'guard' => 'moonshine' ,
'middleware' => Authenticate ::class ,
// ...
],
'layout' => \MoonShine\Laravel\Layouts\AppLayout ::class ,
'locale' => 'en' ,
'locales' => [ 'en' , 'ru' ],
// ...
];
return [
'title' => env('MOONSHINE_TITLE', 'MoonShine'),
'logo' => '/assets/logo.png',
'logo_small' => '/assets/logo-small.svg',
'use_migrations' => true,
'use_notifications' => true,
'use_database_notifications' => true,
'use_profile' => true,
'use_routes' => true,
'domain' => env('MOONSHINE_DOMAIN'),
'prefix' => 'admin',
'middleware' => [
// ...
],
'auth' => [
'enabled' => true,
'guard' => 'moonshine',
'middleware' => Authenticate::class,
// ...
],
'layout' => \MoonShine\Laravel\Layouts\AppLayout::class,
'locale' => 'en',
'locales' => ['en', 'ru'],
// ...
];
return [
'title' => env ( 'MOONSHINE_TITLE' , 'MoonShine' ),
'logo' => '/assets/logo.png' ,
'logo_small' => '/assets/logo-small.svg' ,
'use_migrations' => true ,
'use_notifications' => true ,
'use_database_notifications' => true ,
'use_profile' => true ,
'use_routes' => true ,
'domain' => env ( 'MOONSHINE_DOMAIN' ),
'prefix' => 'admin' ,
'middleware' => [
// ...
],
'auth' => [
'enabled' => true ,
'guard' => 'moonshine' ,
'middleware' => Authenticate ::class ,
// ...
],
'layout' => \MoonShine\Laravel\Layouts\AppLayout ::class ,
'locale' => 'en' ,
'locales' => [ 'en' , 'ru' ],
// ...
];
return [
'title' => env('MOONSHINE_TITLE', 'MoonShine'),
'logo' => '/assets/logo.png',
'logo_small' => '/assets/logo-small.svg',
'use_migrations' => true,
'use_notifications' => true,
'use_database_notifications' => true,
'use_profile' => true,
'use_routes' => true,
'domain' => env('MOONSHINE_DOMAIN'),
'prefix' => 'admin',
'middleware' => [
// ...
],
'auth' => [
'enabled' => true,
'guard' => 'moonshine',
'middleware' => Authenticate::class,
// ...
],
'layout' => \MoonShine\Laravel\Layouts\AppLayout::class,
'locale' => 'en',
'locales' => ['en', 'ru'],
// ...
];
Частичная конфигурация
Альтернативно, вы можете оставить в файле moonshine.php
только те параметры, которые отличаются от значений по умолчанию.
Это делает конфигурацию более чистой и легкой для понимания.
Пример оптимизированного содержимого файла moonshine.php
:
return [
'title' => 'My MoonShine Application',
'use_migrations' => true,
'use_notifications' => true,
'use_database_notifications' => true,
];
return [
'title' => 'My MoonShine Application' ,
'use_migrations' => true ,
'use_notifications' => true ,
'use_database_notifications' => true ,
];
return [
'title' => 'My MoonShine Application',
'use_migrations' => true,
'use_notifications' => true,
'use_database_notifications' => true,
];
return [
'title' => 'My MoonShine Application' ,
'use_migrations' => true ,
'use_notifications' => true ,
'use_database_notifications' => true ,
];
return [
'title' => 'My MoonShine Application',
'use_migrations' => true,
'use_notifications' => true,
'use_database_notifications' => true,
];
use_migrations
, use_notifications
, use_database_notifications
должны присутствовать всегда либо в moonshine.php
, либо в MoonShineServiceProvider
.
Все остальные параметры, не указанные в файле, будут использовать значения по умолчанию.
Альтернативный способ настройки - MoonShineServiceProvider
.
Этот метод предоставляет более программный подход к конфигурации.
Пример конфигурации в MoonShineServiceProvider
:
use Illuminate\Support\ServiceProvider;
use MoonShine\Contracts\Core\DependencyInjection\CoreContract;
use MoonShine\Laravel\DependencyInjection\MoonShine;
use MoonShine\Laravel\DependencyInjection\MoonShineConfigurator;
use MoonShine\Laravel\DependencyInjection\ConfiguratorContract;
class MoonShineServiceProvider extends ServiceProvider
{
public function boot(
CoreContract $core,
ConfiguratorContract $config,
): void
{
$config
->title('My Application')
->logo('/assets/logo.png')
->logo('/assets/logo_small.png', true)
->useMigrations()
->useNotifications()
->useDatabaseNotifications()
->useProfile()
->dir('app/MoonShine', 'App\MoonShine')
->prefixes('admin', 'page', 'resource')
->homeRoute('moonshine.index')
->notFoundException(MoonShineNotFoundException::class)
->middleware([
])
->disk('public')
->cacheDriver('redis')
->authEnable()
->guard('moonshine')
->authMiddleware(Authenticate::class)
->authPipelines([])
->authorizationRules(
function(ResourceContract $ctx, mixed $user, Ability $ability, mixed $data): bool {
return true;
}
)
->layout(\App\MoonShine\Layouts\CustomLayout::class)
->locale('ru')
->locales(['en', 'ru']);
}
}
namespaces
use Illuminate\Support\ServiceProvider ;
use MoonShine\Contracts\Core\DependencyInjection\CoreContract ;
use MoonShine\Laravel\DependencyInjection\MoonShine ;
use MoonShine\Laravel\DependencyInjection\MoonShineConfigurator ;
use MoonShine\Laravel\DependencyInjection\ConfiguratorContract ;
class MoonShineServiceProvider extends ServiceProvider
{
/**
* @param MoonShine $core
* @param MoonShineConfigurator $config
*
*/
public function boot (
CoreContract $core,
ConfiguratorContract $config,
) : void
{
$config
-> title ( 'My Application' )
-> logo ( '/assets/logo.png' )
-> logo ( '/assets/logo_small.png' , true )
-> useMigrations ()
-> useNotifications ()
-> useDatabaseNotifications ()
-> useProfile ()
-> dir ( 'app/MoonShine' , 'App\MoonShine' )
-> prefixes ( 'admin' , 'page' , 'resource' )
-> homeRoute ( 'moonshine.index' )
-> notFoundException ( MoonShineNotFoundException ::class )
-> middleware ([
// ...
])
-> disk ( 'public' )
-> cacheDriver ( 'redis' )
-> authEnable ()
-> guard ( 'moonshine' )
-> authMiddleware ( Authenticate ::class )
-> authPipelines ([])
-> authorizationRules (
function ( ResourceContract $ctx, mixed $user, Ability $ability, mixed $data) : bool {
return true ;
}
)
-> layout ( \App\MoonShine\Layouts\CustomLayout ::class )
-> locale ( 'ru' )
-> locales ([ 'en' , 'ru' ]);
// ...
}
}
use Illuminate\Support\ServiceProvider;
use MoonShine\Contracts\Core\DependencyInjection\CoreContract;
use MoonShine\Laravel\DependencyInjection\MoonShine;
use MoonShine\Laravel\DependencyInjection\MoonShineConfigurator;
use MoonShine\Laravel\DependencyInjection\ConfiguratorContract;
class MoonShineServiceProvider extends ServiceProvider
{
/**
* @param MoonShine $core
* @param MoonShineConfigurator $config
*
*/
public function boot(
CoreContract $core,
ConfiguratorContract $config,
): void
{
$config
->title('My Application')
->logo('/assets/logo.png')
->logo('/assets/logo_small.png', true)
->useMigrations()
->useNotifications()
->useDatabaseNotifications()
->useProfile()
->dir('app/MoonShine', 'App\MoonShine')
->prefixes('admin', 'page', 'resource')
->homeRoute('moonshine.index')
->notFoundException(MoonShineNotFoundException::class)
->middleware([
// ...
])
->disk('public')
->cacheDriver('redis')
->authEnable()
->guard('moonshine')
->authMiddleware(Authenticate::class)
->authPipelines([])
->authorizationRules(
function(ResourceContract $ctx, mixed $user, Ability $ability, mixed $data): bool {
return true;
}
)
->layout(\App\MoonShine\Layouts\CustomLayout::class)
->locale('ru')
->locales(['en', 'ru']);
// ...
}
}
namespaces
use Illuminate\Support\ServiceProvider ;
use MoonShine\Contracts\Core\DependencyInjection\CoreContract ;
use MoonShine\Laravel\DependencyInjection\MoonShine ;
use MoonShine\Laravel\DependencyInjection\MoonShineConfigurator ;
use MoonShine\Laravel\DependencyInjection\ConfiguratorContract ;
class MoonShineServiceProvider extends ServiceProvider
{
/**
* @param MoonShine $core
* @param MoonShineConfigurator $config
*
*/
public function boot (
CoreContract $core,
ConfiguratorContract $config,
) : void
{
$config
-> title ( 'My Application' )
-> logo ( '/assets/logo.png' )
-> logo ( '/assets/logo_small.png' , true )
-> useMigrations ()
-> useNotifications ()
-> useDatabaseNotifications ()
-> useProfile ()
-> dir ( 'app/MoonShine' , 'App\MoonShine' )
-> prefixes ( 'admin' , 'page' , 'resource' )
-> homeRoute ( 'moonshine.index' )
-> notFoundException ( MoonShineNotFoundException ::class )
-> middleware ([
// ...
])
-> disk ( 'public' )
-> cacheDriver ( 'redis' )
-> authEnable ()
-> guard ( 'moonshine' )
-> authMiddleware ( Authenticate ::class )
-> authPipelines ([])
-> authorizationRules (
function ( ResourceContract $ctx, mixed $user, Ability $ability, mixed $data) : bool {
return true ;
}
)
-> layout ( \App\MoonShine\Layouts\CustomLayout ::class )
-> locale ( 'ru' )
-> locales ([ 'en' , 'ru' ]);
// ...
}
}
use Illuminate\Support\ServiceProvider;
use MoonShine\Contracts\Core\DependencyInjection\CoreContract;
use MoonShine\Laravel\DependencyInjection\MoonShine;
use MoonShine\Laravel\DependencyInjection\MoonShineConfigurator;
use MoonShine\Laravel\DependencyInjection\ConfiguratorContract;
class MoonShineServiceProvider extends ServiceProvider
{
/**
* @param MoonShine $core
* @param MoonShineConfigurator $config
*
*/
public function boot(
CoreContract $core,
ConfiguratorContract $config,
): void
{
$config
->title('My Application')
->logo('/assets/logo.png')
->logo('/assets/logo_small.png', true)
->useMigrations()
->useNotifications()
->useDatabaseNotifications()
->useProfile()
->dir('app/MoonShine', 'App\MoonShine')
->prefixes('admin', 'page', 'resource')
->homeRoute('moonshine.index')
->notFoundException(MoonShineNotFoundException::class)
->middleware([
// ...
])
->disk('public')
->cacheDriver('redis')
->authEnable()
->guard('moonshine')
->authMiddleware(Authenticate::class)
->authPipelines([])
->authorizationRules(
function(ResourceContract $ctx, mixed $user, Ability $ability, mixed $data): bool {
return true;
}
)
->layout(\App\MoonShine\Layouts\CustomLayout::class)
->locale('ru')
->locales(['en', 'ru']);
// ...
}
}
Конфигурация через MoonShineServiceProvider
имеет приоритет над настройками в файле moonshine.php
.
При использовании этого метода вы можете полностью удалить файл moonshine.php из вашего проекта.
Некоторые методы MoonShineConfigurator
не имеют прямых аналогов в файле moonshine.php
и наоборот.
Это связано с различиями в подходах к конфигурации через файл и через код.
Независимо от выбранного способа конфигурации, вы можете настроить следующие основные параметры:
use_migrations
- использовать публикацию миграций системы по умолчанию (moonshine_users
, moonshine_user_roles
),
use_notifications
- использовать систему уведомлений,
use_database_notifications
- использовать систему уведомлений Laravel на основе драйвера базы данных,
dir
- директория для MoonShine (по умолчанию app/MoonShine
). Директория используется для генерации файлов через artisan
команды, в целом MoonShine не привязан к структуре,
namespace
- namespace для классов созданных через artisan
команды (по умолчанию App\MoonShine
).
config/moonshine.php MoonShineServiceProvider 'dir' => 'app/MoonShine',
'namespace' => 'App\MoonShine',
'use_migrations' => true,
'use_notifications' => true,
'use_database_notifications' => true,
'dir' => 'app/MoonShine' ,
'namespace' => 'App\MoonShine' ,
'use_migrations' => true ,
'use_notifications' => true ,
'use_database_notifications' => true ,
'dir' => 'app/MoonShine','namespace' => 'App\MoonShine','use_migrations' => true,'use_notifications' => true,'use_database_notifications' => true,
'dir' => 'app/MoonShine' ,
'namespace' => 'App\MoonShine' ,
'use_migrations' => true ,
'use_notifications' => true ,
'use_database_notifications' => true ,
'dir' => 'app/MoonShine','namespace' => 'App\MoonShine','use_migrations' => true,'use_notifications' => true,'use_database_notifications' => true,
$config
->dir(dir: 'app/MoonShine', namespace: 'App\MoonShine')
->useMigrations()
->useNotifications()
->useDatabaseNotifications();
$config
-> dir ( dir : 'app/MoonShine' , namespace : 'App\MoonShine' )
-> useMigrations ()
-> useNotifications ()
-> useDatabaseNotifications ();
$config ->dir(dir: 'app/MoonShine', namespace: 'App\MoonShine') ->useMigrations() ->useNotifications() ->useDatabaseNotifications();
$config
-> dir ( dir : 'app/MoonShine' , namespace : 'App\MoonShine' )
-> useMigrations ()
-> useNotifications ()
-> useDatabaseNotifications ();
$config ->dir(dir: 'app/MoonShine', namespace: 'App\MoonShine') ->useMigrations() ->useNotifications() ->useDatabaseNotifications();
Мета заголовок на страницах (<title>My Application</title>
).
config/moonshine.php MoonShineServiceProvider 'title' => 'My Application',
'title' => 'My Application' ,
'title' => 'My Application',
'title' => 'My Application' ,
'title' => 'My Application',
$config->title('My Application');
$config -> title ( 'My Application' );
$config->title('My Application');
$config -> title ( 'My Application' );
$config->title('My Application');
config/moonshine.php MoonShineServiceProvider 'logo' => '/assets/logo.png',
'logo_small' => '/assets/logo-small.png',
'logo' => '/assets/logo.png' ,
'logo_small' => '/assets/logo-small.png' ,
'logo' => '/assets/logo.png','logo_small' => '/assets/logo-small.png',
'logo' => '/assets/logo.png' ,
'logo_small' => '/assets/logo-small.png' ,
'logo' => '/assets/logo.png','logo_small' => '/assets/logo-small.png',
$config
->logo('/assets/logo.png')
->logo('/assets/logo-small.png', small: true);
$config
-> logo ( '/assets/logo.png' )
-> logo ( '/assets/logo-small.png' , small : true );
$config ->logo('/assets/logo.png') ->logo('/assets/logo-small.png', small: true);
$config
-> logo ( '/assets/logo.png' )
-> logo ( '/assets/logo-small.png' , small : true );
$config ->logo('/assets/logo.png') ->logo('/assets/logo-small.png', small: true);
Вы можете переопределить или дополнить список middleware
в системе.
config/moonshine.php MoonShineServiceProvider 'middleware' => [
'web',
'auth',
],
'middleware' => [
'web' ,
'auth' ,
// ...
],
'middleware' => [ 'web', 'auth', // ...],
'middleware' => [
'web' ,
'auth' ,
// ...
],
'middleware' => [ 'web', 'auth', // ...],
$config
->middleware(['web', 'auth'])
->addMiddleware('custom-middleware')
->exceptMiddleware(['auth']);
$config
-> middleware ([ 'web' , 'auth' ])
-> addMiddleware ( 'custom-middleware' )
-> exceptMiddleware ([ 'auth' ]);
$config ->middleware(['web', 'auth']) ->addMiddleware('custom-middleware') ->exceptMiddleware(['auth']);
$config
-> middleware ([ 'web' , 'auth' ])
-> addMiddleware ( 'custom-middleware' )
-> exceptMiddleware ([ 'auth' ]);
$config ->middleware(['web', 'auth']) ->addMiddleware('custom-middleware') ->exceptMiddleware(['auth']);
Установка префиксов
config/moonshine.php MoonShineServiceProvider 'prefix' => 'admin',
'page_prefix' => 'page',
'resource_prefix' => 'resource',
'prefix' => 'admin' ,
'page_prefix' => 'page' ,
'resource_prefix' => 'resource' ,
'prefix' => 'admin','page_prefix' => 'page','resource_prefix' => 'resource',
'prefix' => 'admin' ,
'page_prefix' => 'page' ,
'resource_prefix' => 'resource' ,
'prefix' => 'admin','page_prefix' => 'page','resource_prefix' => 'resource',
$config->prefixes('admin', 'page', 'resource');
$config -> prefixes ( 'admin' , 'page' , 'resource' );
$config->prefixes('admin', 'page', 'resource');
$config -> prefixes ( 'admin' , 'page' , 'resource' );
$config->prefixes('admin', 'page', 'resource');
Вы можете оставить resource_prefix
пустым и URL
ресурсов будет иметь вид /admin/{resourceUri}/{pageUri}
,
но вы можете создать конфликт с роутами пакетов.
Установка домена
config/moonshine.php MoonShineServiceProvider 'domain' => 'admin.example.com',
'domain' => 'admin.example.com' ,
'domain' => 'admin.example.com',
'domain' => 'admin.example.com' ,
'domain' => 'admin.example.com',
$config->domain('admin.example.com');
$config -> domain ( 'admin.example.com' );
$config->domain('admin.example.com');
$config -> domain ( 'admin.example.com' );
$config->domain('admin.example.com');
404
Вы можете заменить Exception
на собственный.
config/moonshine.php MoonShineServiceProvider 'not_found_exception' => MoonShineNotFoundException::class,
'not_found_exception' => MoonShineNotFoundException ::class ,
'not_found_exception' => MoonShineNotFoundException::class,
'not_found_exception' => MoonShineNotFoundException ::class ,
'not_found_exception' => MoonShineNotFoundException::class,
$config->notFoundException(MoonShineNotFoundException::class);
$config -> notFoundException ( MoonShineNotFoundException ::class );
$config->notFoundException(MoonShineNotFoundException::class);
$config -> notFoundException ( MoonShineNotFoundException ::class );
$config->notFoundException(MoonShineNotFoundException::class);
Установка guard
config/moonshine.php MoonShineServiceProvider 'auth' => [
'guard' => 'admin',
],
'auth' => [
'guard' => 'admin' ,
// ...
],
'auth' => [ 'guard' => 'admin', // ...],
'auth' => [
'guard' => 'admin' ,
// ...
],
'auth' => [ 'guard' => 'admin', // ...],
$config->guard('admin');
$config -> guard ( 'admin' );
$config->guard('admin');
$config -> guard ( 'admin' );
$config->guard('admin');
Отключение встроенной аутентификации
config/moonshine.php MoonShineServiceProvider 'auth' => [
'enabled' => false,
],
'auth' => [
'enabled' => false ,
// ...
],
'auth' => [ 'enabled' => false, // ...],
'auth' => [
'enabled' => false ,
// ...
],
'auth' => [ 'enabled' => false, // ...],
$config->authDisable();
$config -> authDisable ();
$config->authDisable();
$config -> authDisable ();
$config->authDisable();
Изменение модели
'auth' => [
'model' => User::class,
],
'auth' => [
// ...
'model' => User ::class ,
// ...
],
'auth' => [
// ...
'model' => User::class,
// ...
],
'auth' => [
// ...
'model' => User ::class ,
// ...
],
'auth' => [
// ...
'model' => User::class,
// ...
],
Указывается при инициализации приложения, поэтому указывается исключительно через файл конфигурации.
Middleware для проверки наличия сессии
config/moonshine.php MoonShineServiceProvider 'auth' => [
'middleware' => Authenticate::class,
],
'auth' => [
// ...
'middleware' => Authenticate ::class ,
// ...
],
'auth' => [ // ... 'middleware' => Authenticate::class, // ...],
'auth' => [
// ...
'middleware' => Authenticate ::class ,
// ...
],
'auth' => [ // ... 'middleware' => Authenticate::class, // ...],
$config->authMiddleware(Authenticate::class);
$config -> authMiddleware ( Authenticate ::class );
$config->authMiddleware(Authenticate::class);
$config -> authMiddleware ( Authenticate ::class );
$config->authMiddleware(Authenticate::class);
Pipelines
config/moonshine.php MoonShineServiceProvider 'auth' => [
'pipelines' => [
TwoFactor::class
],
],
'auth' => [
// ...
'pipelines' => [
TwoFactor ::class
],
// ...
],
'auth' => [ // ... 'pipelines' => [ TwoFactor::class ], // ...],
'auth' => [
// ...
'pipelines' => [
TwoFactor ::class
],
// ...
],
'auth' => [ // ... 'pipelines' => [ TwoFactor::class ], // ...],
$config->authPipelines([TwoFactor::class]);
$config -> authPipelines ([ TwoFactor ::class ]);
$config->authPipelines([TwoFactor::class]);
$config -> authPipelines ([ TwoFactor ::class ]);
$config->authPipelines([TwoFactor::class]);
Поля пользователя
Если вы просто заменили модель на свою auth.model
, то скорее всего вы столкнетесь с проблемой несоответствия наименования полей.
Чтобы настроить соответствие, воспользуйтесь настройкой userField()
.
config/moonshine.php MoonShineServiceProvider 'user_fields' => [
'username' => 'email',
'password' => 'password',
'name' => 'name',
'avatar' => 'avatar',
],
'user_fields' => [
'username' => 'email' ,
'password' => 'password' ,
'name' => 'name' ,
'avatar' => 'avatar' ,
],
'user_fields' => [ 'username' => 'email', 'password' => 'password', 'name' => 'name', 'avatar' => 'avatar',],
'user_fields' => [
'username' => 'email' ,
'password' => 'password' ,
'name' => 'name' ,
'avatar' => 'avatar' ,
],
'user_fields' => [ 'username' => 'email', 'password' => 'password', 'name' => 'name', 'avatar' => 'avatar',],
$config->userField('username', 'username');
$config -> userField ( 'username' , 'username' );
$config->userField('username', 'username');
$config -> userField ( 'username' , 'username' );
$config->userField('username', 'username');
Язык по умолчанию
config/moonshine.php MoonShineServiceProvider 'locale' => 'en',
'locale' => 'en' ,
'locale' => 'en',
'locale' => 'en' ,
'locale' => 'en',
$config->locale('en');
$config -> locale ( 'en' );
$config->locale('en');
$config -> locale ( 'en' );
$config->locale('en');
Установка доступных языков
config/moonshine.php MoonShineServiceProvider 'locales' => ['en', 'ru'],
'locales' => [ 'en' , 'ru' ],
'locales' => ['en', 'ru'],
'locales' => [ 'en' , 'ru' ],
'locales' => ['en', 'ru'],
$config->locales(['en', 'ru']);
$config -> locales ([ 'en' , 'ru' ]);
$config->locales(['en', 'ru']);
$config -> locales ([ 'en' , 'ru' ]);
$config->locales(['en', 'ru']);
Изменение имени параметра
config/moonshine.php app/Providers/MoonShineServiceProvider.php 'locale_key' => '_lang',
'locale_key' => '_lang' ,
'locale_key' => '_lang',
'locale_key' => '_lang' ,
'locale_key' => '_lang',
$config->localeKey('_lang');
$config -> localeKey ( '_lang' );
$config->localeKey('_lang');
$config -> localeKey ( '_lang' );
$config->localeKey('_lang');
Подробнее смотрите в разделе локализация .
Storage
config/moonshine.php MoonShineServiceProvider 'disk' => 'public',
'disk_options' => [],
'disk' => 'public' ,
'disk_options' => [],
'disk' => 'public','disk_options' => [],
'disk' => 'public' ,
'disk_options' => [],
'disk' => 'public','disk_options' => [],
$config->disk('public', options: []);
$config -> disk ( 'public' , options : []);
$config->disk('public', options: []);
$config -> disk ( 'public' , options : []);
$config->disk('public', options: []);
Cache
config/moonshine.php MoonShineServiceProvider 'cache' => 'file',
'cache' => 'file' ,
'cache' => 'file',
'cache' => 'file' ,
'cache' => 'file',
$config->cacheDriver('redis');
$config -> cacheDriver ( 'redis' );
$config->cacheDriver('redis');
$config -> cacheDriver ( 'redis' );
$config->cacheDriver('redis');
Шаблон используемый по умолчанию.
config/moonshine.php MoonShineServiceProvider 'layout' => \App\MoonShine\Layouts\CustomLayout::class,
'layout' => \App\MoonShine\Layouts\CustomLayout ::class ,
'layout' => \App\MoonShine\Layouts\CustomLayout::class,
'layout' => \App\MoonShine\Layouts\CustomLayout ::class ,
'layout' => \App\MoonShine\Layouts\CustomLayout::class,
$config->layout(\App\MoonShine\Layouts\CustomLayout::class);
$config -> layout ( \App\MoonShine\Layouts\CustomLayout ::class );
$config->layout(\App\MoonShine\Layouts\CustomLayout::class);
$config -> layout ( \App\MoonShine\Layouts\CustomLayout ::class );
$config->layout(\App\MoonShine\Layouts\CustomLayout::class);
Для удобства мы вынесли формы аутентификации и фильтров в конфигурацию и даем быстрый способ их заменить на собственные.
config/moonshine.php MoonShineServiceProvider 'forms' => [
'login' => LoginForm::class,
'filters' => FiltersForm::class,
],
'forms' => [
'login' => LoginForm ::class ,
'filters' => FiltersForm ::class ,
],
'forms' => [ 'login' => LoginForm::class, 'filters' => FiltersForm::class,],
'forms' => [
'login' => LoginForm ::class ,
'filters' => FiltersForm ::class ,
],
'forms' => [ 'login' => LoginForm::class, 'filters' => FiltersForm::class,],
$config->set('forms.login', MyLoginForm::class);
$config -> set ( 'forms.login' , MyLoginForm ::class );
$config->set('forms.login', MyLoginForm::class);
$config -> set ( 'forms.login' , MyLoginForm ::class );
$config->set('forms.login', MyLoginForm::class);
Для удобства мы вынесли базовые страницы в конфигурацию и даем быстрый способ их заменить на собственные.
config/moonshine.php MoonShineServiceProvider 'pages' => [
'dashboard' => Dashboard::class,
'profile' => ProfilePage::class,
'login' => LoginPage::class,
'error' => ErrorPage::class,
],
'pages' => [
'dashboard' => Dashboard ::class ,
'profile' => ProfilePage ::class ,
'login' => LoginPage ::class ,
'error' => ErrorPage ::class ,
],
'pages' => [ 'dashboard' => Dashboard::class, 'profile' => ProfilePage::class, 'login' => LoginPage::class, 'error' => ErrorPage::class,],
'pages' => [
'dashboard' => Dashboard ::class ,
'profile' => ProfilePage ::class ,
'login' => LoginPage ::class ,
'error' => ErrorPage ::class ,
],
'pages' => [ 'dashboard' => Dashboard::class, 'profile' => ProfilePage::class, 'login' => LoginPage::class, 'error' => ErrorPage::class,],
$config->changePage(LoginPage::class, MyLoginPage::class);
$config -> changePage ( LoginPage ::class , MyLoginPage ::class );
$config->changePage(LoginPage::class, MyLoginPage::class);
$config -> changePage ( LoginPage ::class , MyLoginPage ::class );
$config->changePage(LoginPage::class, MyLoginPage::class);
Вы можете указать какой роут или урл является главной страницей панели.
Используется при редиректе после успешной аутентификации, ссылке на логотипе и 404 странице.
config/moonshine.php MoonShineServiceProvider 'home_route' => 'moonshine.index',
'home_url' => '/admin/page/some-page',
'home_route' => 'moonshine.index' ,
// or url string
'home_url' => '/admin/page/some-page' ,
'home_route' => 'moonshine.index',// or url string'home_url' => '/admin/page/some-page',
'home_route' => 'moonshine.index' ,
// or url string
'home_url' => '/admin/page/some-page' ,
'home_route' => 'moonshine.index',// or url string'home_url' => '/admin/page/some-page',
$config->homeRoute('moonshine.index');
$config->homeUrl('/admin/page/some-page');
$config -> homeRoute ( 'moonshine.index' );
// or url string
$config -> homeUrl ( '/admin/page/some-page' );
$config->homeRoute('moonshine.index');// or url string$config->homeUrl('/admin/page/some-page');
$config -> homeRoute ( 'moonshine.index' );
// or url string
$config -> homeUrl ( '/admin/page/some-page' );
$config->homeRoute('moonshine.index');// or url string$config->homeUrl('/admin/page/some-page');
MoonShine предоставляет удобные методы для получения страниц и форм в вашем приложении.
Получение страниц
Метод getPage
позволяет получить экземпляр страницы по её имени или использовать страницу по умолчанию.
getPage(
string $name,
string $default,
mixed ...$parameters,
)
getPage (
string $name,
string $default,
mixed ... $parameters,
)
getPage(
string $name,
string $default,
mixed ...$parameters,
)
getPage (
string $name,
string $default,
mixed ... $parameters,
)
getPage(
string $name,
string $default,
mixed ...$parameters,
)
Параметры:
$name
- имя страницы в конфиге,
$default
- класс страницы по умолчанию, если не найдена в конфиге,
$parameters
- дополнительные параметры для конструктора страницы.
Пример использования:
$customPage = moonshineConfig()->getPage('custom');
// Helper
$customPage = moonshineConfig () -> getPage ( 'custom' );
// Helper
$customPage = moonshineConfig()->getPage('custom');
// Helper
$customPage = moonshineConfig () -> getPage ( 'custom' );
// Helper
$customPage = moonshineConfig()->getPage('custom');
use MoonShine\Contracts\Core\DependencyInjection\ConfiguratorContract;
use MoonShine\Laravel\DependencyInjection\MoonShineConfigurator;
public function index(ConfiguratorContract $config)
{
$customPage = $config->getPage('custom');
}
// DI
use MoonShine\Contracts\Core\DependencyInjection\ConfiguratorContract ;
use MoonShine\Laravel\DependencyInjection\MoonShineConfigurator ;
/**
* @param MoonShineConfigurator $configurator
*/
public function index ( ConfiguratorContract $config)
{
$customPage = $config -> getPage ( 'custom' );
}
// DI
use MoonShine\Contracts\Core\DependencyInjection\ConfiguratorContract;
use MoonShine\Laravel\DependencyInjection\MoonShineConfigurator;
/**
* @param MoonShineConfigurator $configurator
*/
public function index(ConfiguratorContract $config)
{
$customPage = $config->getPage('custom');
}
// DI
use MoonShine\Contracts\Core\DependencyInjection\ConfiguratorContract ;
use MoonShine\Laravel\DependencyInjection\MoonShineConfigurator ;
/**
* @param MoonShineConfigurator $configurator
*/
public function index ( ConfiguratorContract $config)
{
$customPage = $config -> getPage ( 'custom' );
}
// DI
use MoonShine\Contracts\Core\DependencyInjection\ConfiguratorContract;
use MoonShine\Laravel\DependencyInjection\MoonShineConfigurator;
/**
* @param MoonShineConfigurator $configurator
*/
public function index(ConfiguratorContract $config)
{
$customPage = $config->getPage('custom');
}
Получение форм
Метод getForm
позволяет получить экземпляр формы по её имени или использовать форму по умолчанию.
getForm(
string $name,
string $default,
mixed ...$parameters,
)
getForm (
string $name,
string $default,
mixed ... $parameters,
)
getForm(
string $name,
string $default,
mixed ...$parameters,
)
getForm (
string $name,
string $default,
mixed ... $parameters,
)
getForm(
string $name,
string $default,
mixed ...$parameters,
)
Параметры:
$name
- имя формы в конфиге,
$default
- класс формы по умолчанию,
$parameters
- дополнительные параметры для конструктора формы.
Пример использования:
$form = moonshineConfig()->getForm('login');
// Helper
$form = moonshineConfig () -> getForm ( 'login' );
// Helper
$form = moonshineConfig()->getForm('login');
// Helper
$form = moonshineConfig () -> getForm ( 'login' );
// Helper
$form = moonshineConfig()->getForm('login');
use MoonShine\Contracts\Core\DependencyInjection\ConfiguratorContract;
use MoonShine\Laravel\DependencyInjection\MoonShineConfigurator;
public function index(ConfiguratorContract $config)
{
$form = $config->getForm('login');
}
// DI
use MoonShine\Contracts\Core\DependencyInjection\ConfiguratorContract ;
use MoonShine\Laravel\DependencyInjection\MoonShineConfigurator ;
/**
* @param MoonShineConfigurator $configurator
*/
public function index ( ConfiguratorContract $config)
{
$form = $config -> getForm ( 'login' );
}
// DI
use MoonShine\Contracts\Core\DependencyInjection\ConfiguratorContract;
use MoonShine\Laravel\DependencyInjection\MoonShineConfigurator;
/**
* @param MoonShineConfigurator $configurator
*/
public function index(ConfiguratorContract $config)
{
$form = $config->getForm('login');
}
// DI
use MoonShine\Contracts\Core\DependencyInjection\ConfiguratorContract ;
use MoonShine\Laravel\DependencyInjection\MoonShineConfigurator ;
/**
* @param MoonShineConfigurator $configurator
*/
public function index ( ConfiguratorContract $config)
{
$form = $config -> getForm ( 'login' );
}
// DI
use MoonShine\Contracts\Core\DependencyInjection\ConfiguratorContract;
use MoonShine\Laravel\DependencyInjection\MoonShineConfigurator;
/**
* @param MoonShineConfigurator $configurator
*/
public function index(ConfiguratorContract $config)
{
$form = $config->getForm('login');
}
Объявление страниц и форм в конфигурации
Вы можете настроить соответствие между именами и классами страниц и форм в файле moonshine.php
.
return [
'pages' => [
'dashboard' => \App\MoonShine\Pages\DashboardPage::class,
'custom' => \App\MoonShine\Pages\CustomPage::class,
],
'forms' => [
'login' => \App\MoonShine\Forms\LoginForm::class,
'custom' => \App\MoonShine\Forms\CustomForm::class,
],
];
return [
// Другие настройки...
'pages' => [
'dashboard' => \App\MoonShine\Pages\DashboardPage ::class ,
'custom' => \App\MoonShine\Pages\CustomPage ::class ,
],
'forms' => [
'login' => \App\MoonShine\Forms\LoginForm ::class ,
'custom' => \App\MoonShine\Forms\CustomForm ::class ,
],
];
return [
// Другие настройки...
'pages' => [
'dashboard' => \App\MoonShine\Pages\DashboardPage::class,
'custom' => \App\MoonShine\Pages\CustomPage::class,
],
'forms' => [
'login' => \App\MoonShine\Forms\LoginForm::class,
'custom' => \App\MoonShine\Forms\CustomForm::class,
],
];
return [
// Другие настройки...
'pages' => [
'dashboard' => \App\MoonShine\Pages\DashboardPage ::class ,
'custom' => \App\MoonShine\Pages\CustomPage ::class ,
],
'forms' => [
'login' => \App\MoonShine\Forms\LoginForm ::class ,
'custom' => \App\MoonShine\Forms\CustomForm ::class ,
],
];
return [
// Другие настройки...
'pages' => [
'dashboard' => \App\MoonShine\Pages\DashboardPage::class,
'custom' => \App\MoonShine\Pages\CustomPage::class,
],
'forms' => [
'login' => \App\MoonShine\Forms\LoginForm::class,
'custom' => \App\MoonShine\Forms\CustomForm::class,
],
];
Это позволит вам легко получать нужные страницы и формы по их именам, используя методы getPage
и getForm
.
При выборе метода конфигурации важно учитывать следующее:
Приоритет : Конфигурация через MoonShineServiceProvider
имеет приоритет над настройками в файле moonshine.php
.
Гибкость :
Полная конфигурация через moonshine.php
дает четкий обзор всех настроек,
Частичная конфигурация через moonshine.php
позволяет легко видеть, какие параметры были изменены,
Конфигурация через MoonShineServiceProvider
предоставляет максимальную гибкость и возможность использовать логику при настройке.
Простота поддержки :
Использование файла moonshine.php
может быть проще для быстрых изменений и понимания общей структуры настроек,
MoonShineServiceProvider
позволяет централизованно управлять настройками в одном месте в коде.
Интеграция с кодом :
Конфигурация через MoonShineServiceProvider
лучше интегрируется с остальным кодом приложения и позволяет использовать зависимости и сервисы Laravel.
Выберите метод, который лучше всего соответствует вашему стилю разработки и требованиям проекта.
Вы также можете комбинировать эти подходы, например, используя файл moonshine.php
для базовых настроек и MoonShineServiceProvider
для более сложной конфигурации.