Навигационное меню настраивается в App\Providers\MoonShineServiceProvider через метод menu()
, который возвращает массив элементов меню.
Чтобы добавить пункт меню, необходимо использовать класс MoonShine\Menu\MenuItem и его статический метод make()
.
MenuItem::make(Closure|string $label, Closure|MenuFiller|string $filler, null|string $icon = null, Closure|bool $blank = false)
MenuItem::make(Closure|string $label, Closure|MenuFiller|string $filler, null|string $icon = null, Closure|bool $blank = false)
MenuItem::make(Closure|string $label, Closure|MenuFiller|string $filler, null|string $icon = null, Closure|bool $blank = false)
MenuItem::make(Closure|string $label, Closure|MenuFiller|string $filler, null|string $icon = null, Closure|bool $blank = false)
MenuItem::make(Closure|string $label, Closure|MenuFiller|string $filler, null|string $icon = null, Closure|bool $blank = false)
$label
- название пункта меню
$filler
- элемент для формирования url
$icon
- иконка для пункта меню,
$blank
- открыть в новой вкладке.
namespace App\Providers;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
use MoonShine\Resources\MoonShineUserResource;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuItem::make('Администраторы', new MoonShineUserResource()),
MenuItem::make('Главная', fn() => route('home')),
MenuItem::make('Документация', 'https://moonshine-laravel.com/docs'),
MenuItem::make('Документация Laravel', 'https://laravel.com/docs', blank: true)
];
}
}
namespace App\Providers;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
use MoonShine\Resources\MoonShineUserResource;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuItem::make('Администраторы', new MoonShineUserResource()),
MenuItem::make('Главная', fn() => route('home')),
MenuItem::make('Документация', 'https://moonshine-laravel.com/docs'),
MenuItem::make('Документация Laravel', 'https://laravel.com/docs', blank: true)
];
}
//...
}
namespace App\Providers;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
use MoonShine\Resources\MoonShineUserResource;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuItem::make('Администраторы', new MoonShineUserResource()),
MenuItem::make('Главная', fn() => route('home')),
MenuItem::make('Документация', 'https://moonshine-laravel.com/docs'),
MenuItem::make('Документация Laravel', 'https://laravel.com/docs', blank: true)
];
}
//...
}
namespace App\Providers;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
use MoonShine\Resources\MoonShineUserResource;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuItem::make('Администраторы', new MoonShineUserResource()),
MenuItem::make('Главная', fn() => route('home')),
MenuItem::make('Документация', 'https://moonshine-laravel.com/docs'),
MenuItem::make('Документация Laravel', 'https://laravel.com/docs', blank: true)
];
}
//...
}
namespace App\Providers;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
use MoonShine\Resources\MoonShineUserResource;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuItem::make('Администраторы', new MoonShineUserResource()),
MenuItem::make('Главная', fn() => route('home')),
MenuItem::make('Документация', 'https://moonshine-laravel.com/docs'),
MenuItem::make('Документация Laravel', 'https://laravel.com/docs', blank: true)
];
}
//...
}
Если меню создается для ModelResource или Resource, то пункт меню будет использовать первую страницу, объявленную в методе pages()
.
Меню через Closure
Вы можете объявить меню, используя замыкание на основе текущего запроса:
namespace App\Providers;
use Closure;
use MoonShine\MoonShineRequest;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): Closure
{
return static function (MoonShineRequest $request) {
return [
];
};
};
}
namespace App\Providers;
use Closure;
use MoonShine\MoonShineRequest;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): Closure
{
return static function (MoonShineRequest $request) {
return [
//...
];
};
};
//...
}
namespace App\Providers;
use Closure;
use MoonShine\MoonShineRequest;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): Closure
{
return static function (MoonShineRequest $request) {
return [
//...
];
};
};
//...
}
namespace App\Providers;
use Closure;
use MoonShine\MoonShineRequest;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): Closure
{
return static function (MoonShineRequest $request) {
return [
//...
];
};
};
//...
}
namespace App\Providers;
use Closure;
use MoonShine\MoonShineRequest;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): Closure
{
return static function (MoonShineRequest $request) {
return [
//...
];
};
};
//...
}
Это будет полезно, если вы решите использовать мультитенантность или если у вас реализованы как веб, так и админ части на MoonShine.
При объявлении меню с использованием Closure необходимо вручную зарегистрировать страницы и ресурсы в соответствующих методах.
Пункты меню можно объединять в группы. Для этого используйте класс MoonShine\Menu\MenuGroup со статическим методом make()
.
MenuGroup::make(Closure|string $label, iterable $items, null|string $icon = null)
MenuGroup::make(Closure|string $label, iterable $items, null|string $icon = null)
MenuGroup::make(Closure|string $label, iterable $items, null|string $icon = null)
MenuGroup::make(Closure|string $label, iterable $items, null|string $icon = null)
MenuGroup::make(Closure|string $label, iterable $items, null|string $icon = null)
$label
- название группы
$items
- массив компонентов меню
$icon
- иконка для группы.
namespace App\Providers;
use MoonShine\Menu\MenuGroup;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
use MoonShine\Resources\MoonShineUserResource;
use MoonShine\Resources\MoonShineUserRoleResource;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuGroup::make('Система', [
MenuItem::make('Администраторы', new MoonShineUserResource()),
MenuItem::make('Роли', new MoonShineUserRoleResource()),
])
];
}
}
namespace App\Providers;
use MoonShine\Menu\MenuGroup;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
use MoonShine\Resources\MoonShineUserResource;
use MoonShine\Resources\MoonShineUserRoleResource;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuGroup::make('Система', [
MenuItem::make('Администраторы', new MoonShineUserResource()),
MenuItem::make('Роли', new MoonShineUserRoleResource()),
])
];
}
//...
}
namespace App\Providers;
use MoonShine\Menu\MenuGroup;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
use MoonShine\Resources\MoonShineUserResource;
use MoonShine\Resources\MoonShineUserRoleResource;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuGroup::make('Система', [
MenuItem::make('Администраторы', new MoonShineUserResource()),
MenuItem::make('Роли', new MoonShineUserRoleResource()),
])
];
}
//...
}
namespace App\Providers;
use MoonShine\Menu\MenuGroup;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
use MoonShine\Resources\MoonShineUserResource;
use MoonShine\Resources\MoonShineUserRoleResource;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuGroup::make('Система', [
MenuItem::make('Администраторы', new MoonShineUserResource()),
MenuItem::make('Роли', new MoonShineUserRoleResource()),
])
];
}
//...
}
namespace App\Providers;
use MoonShine\Menu\MenuGroup;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
use MoonShine\Resources\MoonShineUserResource;
use MoonShine\Resources\MoonShineUserRoleResource;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuGroup::make('Система', [
MenuItem::make('Администраторы', new MoonShineUserResource()),
MenuItem::make('Роли', new MoonShineUserRoleResource()),
])
];
}
//...
}

Вы также можете добавлять элементы в группу, используя метод setItems()
setItems(iterable $items)
setItems(iterable $items)
setItems(iterable $items)
setItems(iterable $items)
setItems(iterable $items)
namespace App\Providers;
use MoonShine\Menu\MenuGroup;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
use MoonShine\Resources\MoonShineUserResource;
use MoonShine\Resources\MoonShineUserRoleResource;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuGroup::make('Система')->setItems([
MenuItem::make('Администраторы', new MoonShineUserResource()),
MenuItem::make('Роли', new MoonShineUserRoleResource()),
])
];
}
}
namespace App\Providers;
use MoonShine\Menu\MenuGroup;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
use MoonShine\Resources\MoonShineUserResource;
use MoonShine\Resources\MoonShineUserRoleResource;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuGroup::make('Система')->setItems([
MenuItem::make('Администраторы', new MoonShineUserResource()),
MenuItem::make('Роли', new MoonShineUserRoleResource()),
])
];
}
//...
}
namespace App\Providers;
use MoonShine\Menu\MenuGroup;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
use MoonShine\Resources\MoonShineUserResource;
use MoonShine\Resources\MoonShineUserRoleResource;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuGroup::make('Система')->setItems([
MenuItem::make('Администраторы', new MoonShineUserResource()),
MenuItem::make('Роли', new MoonShineUserRoleResource()),
])
];
}
//...
}
namespace App\Providers;
use MoonShine\Menu\MenuGroup;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
use MoonShine\Resources\MoonShineUserResource;
use MoonShine\Resources\MoonShineUserRoleResource;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuGroup::make('Система')->setItems([
MenuItem::make('Администраторы', new MoonShineUserResource()),
MenuItem::make('Роли', new MoonShineUserRoleResource()),
])
];
}
//...
}
namespace App\Providers;
use MoonShine\Menu\MenuGroup;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
use MoonShine\Resources\MoonShineUserResource;
use MoonShine\Resources\MoonShineUserRoleResource;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuGroup::make('Система')->setItems([
MenuItem::make('Администраторы', new MoonShineUserResource()),
MenuItem::make('Роли', new MoonShineUserRoleResource()),
])
];
}
//...
}
Для создания многоуровневого меню группы можно вкладывать друг в друга.
Метод customAttributes()
позволяет добавлять собственные атрибуты для групп и пунктов меню.
customAttributes(array $attributes)
customAttributes(array $attributes)
customAttributes(array $attributes)
customAttributes(array $attributes)
customAttributes(array $attributes)
namespace App\Providers;
use MoonShine\Menu\MenuGroup;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
use MoonShine\Resources\MoonShineUserResource;
use MoonShine\Resources\MoonShineUserRoleResource;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuGroup::make(static fn () => __('moonshine::ui.resource.system'), [
MenuItem::make(
static fn () => __('moonshine::ui.resource.admins_title'),
new MoonShineUserResource()
),
MenuItem::make(
static fn () => __('moonshine::ui.resource.role_title'),
new MoonShineUserRoleResource()
)
->customAttributes(['class' => 'group-li-custom-class']),
])
->customAttributes(['class' => 'group-li-custom-class'])
];
}
}
namespace App\Providers;
use MoonShine\Menu\MenuGroup;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
use MoonShine\Resources\MoonShineUserResource;
use MoonShine\Resources\MoonShineUserRoleResource;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuGroup::make(static fn () => __('moonshine::ui.resource.system'), [
MenuItem::make(
static fn () => __('moonshine::ui.resource.admins_title'),
new MoonShineUserResource()
),
MenuItem::make(
static fn () => __('moonshine::ui.resource.role_title'),
new MoonShineUserRoleResource()
)
->customAttributes(['class' => 'group-li-custom-class']),
])
->customAttributes(['class' => 'group-li-custom-class'])
];
}
//...
}
namespace App\Providers;
use MoonShine\Menu\MenuGroup;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
use MoonShine\Resources\MoonShineUserResource;
use MoonShine\Resources\MoonShineUserRoleResource;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuGroup::make(static fn () => __('moonshine::ui.resource.system'), [
MenuItem::make(
static fn () => __('moonshine::ui.resource.admins_title'),
new MoonShineUserResource()
),
MenuItem::make(
static fn () => __('moonshine::ui.resource.role_title'),
new MoonShineUserRoleResource()
)
->customAttributes(['class' => 'group-li-custom-class']),
])
->customAttributes(['class' => 'group-li-custom-class'])
];
}
//...
}
namespace App\Providers;
use MoonShine\Menu\MenuGroup;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
use MoonShine\Resources\MoonShineUserResource;
use MoonShine\Resources\MoonShineUserRoleResource;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuGroup::make(static fn () => __('moonshine::ui.resource.system'), [
MenuItem::make(
static fn () => __('moonshine::ui.resource.admins_title'),
new MoonShineUserResource()
),
MenuItem::make(
static fn () => __('moonshine::ui.resource.role_title'),
new MoonShineUserRoleResource()
)
->customAttributes(['class' => 'group-li-custom-class']),
])
->customAttributes(['class' => 'group-li-custom-class'])
];
}
//...
}
namespace App\Providers;
use MoonShine\Menu\MenuGroup;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
use MoonShine\Resources\MoonShineUserResource;
use MoonShine\Resources\MoonShineUserRoleResource;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuGroup::make(static fn () => __('moonshine::ui.resource.system'), [
MenuItem::make(
static fn () => __('moonshine::ui.resource.admins_title'),
new MoonShineUserResource()
),
MenuItem::make(
static fn () => __('moonshine::ui.resource.role_title'),
new MoonShineUserRoleResource()
)
->customAttributes(['class' => 'group-li-custom-class']),
])
->customAttributes(['class' => 'group-li-custom-class'])
];
}
//...
}
Метод linkAttributes()
позволяет добавлять атрибуты к тегу ссылки a
.
linkAttributes(array $attributes)
linkAttributes(array $attributes)
linkAttributes(array $attributes)
linkAttributes(array $attributes)
linkAttributes(array $attributes)
namespace App\Providers;
use MoonShine\Menu\MenuGroup;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
use MoonShine\Resources\MoonShineUserResource;
use MoonShine\Resources\MoonShineUserRoleResource;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuGroup::make(static fn () => __('moonshine::ui.resource.system'), [
MenuItem::make(
static fn () => __('moonshine::ui.resource.admins_title'),
new MoonShineUserResource()
)
->linkAttributes(['class' => 'group-a-custom-class']),
MenuItem::make(
static fn () => __('moonshine::ui.resource.role_title'),
new MoonShineUserRoleResource()
),
])
->linkAttributes(['class' => 'group-button-custom-class'])
];
}
}
namespace App\Providers;
use MoonShine\Menu\MenuGroup;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
use MoonShine\Resources\MoonShineUserResource;
use MoonShine\Resources\MoonShineUserRoleResource;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuGroup::make(static fn () => __('moonshine::ui.resource.system'), [
MenuItem::make(
static fn () => __('moonshine::ui.resource.admins_title'),
new MoonShineUserResource()
)
->linkAttributes(['class' => 'group-a-custom-class']),
MenuItem::make(
static fn () => __('moonshine::ui.resource.role_title'),
new MoonShineUserRoleResource()
),
])
->linkAttributes(['class' => 'group-button-custom-class'])
];
}
//...
}
namespace App\Providers;
use MoonShine\Menu\MenuGroup;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
use MoonShine\Resources\MoonShineUserResource;
use MoonShine\Resources\MoonShineUserRoleResource;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuGroup::make(static fn () => __('moonshine::ui.resource.system'), [
MenuItem::make(
static fn () => __('moonshine::ui.resource.admins_title'),
new MoonShineUserResource()
)
->linkAttributes(['class' => 'group-a-custom-class']),
MenuItem::make(
static fn () => __('moonshine::ui.resource.role_title'),
new MoonShineUserRoleResource()
),
])
->linkAttributes(['class' => 'group-button-custom-class'])
];
}
//...
}
namespace App\Providers;
use MoonShine\Menu\MenuGroup;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
use MoonShine\Resources\MoonShineUserResource;
use MoonShine\Resources\MoonShineUserRoleResource;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuGroup::make(static fn () => __('moonshine::ui.resource.system'), [
MenuItem::make(
static fn () => __('moonshine::ui.resource.admins_title'),
new MoonShineUserResource()
)
->linkAttributes(['class' => 'group-a-custom-class']),
MenuItem::make(
static fn () => __('moonshine::ui.resource.role_title'),
new MoonShineUserRoleResource()
),
])
->linkAttributes(['class' => 'group-button-custom-class'])
];
}
//...
}
namespace App\Providers;
use MoonShine\Menu\MenuGroup;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
use MoonShine\Resources\MoonShineUserResource;
use MoonShine\Resources\MoonShineUserRoleResource;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuGroup::make(static fn () => __('moonshine::ui.resource.system'), [
MenuItem::make(
static fn () => __('moonshine::ui.resource.admins_title'),
new MoonShineUserResource()
)
->linkAttributes(['class' => 'group-a-custom-class']),
MenuItem::make(
static fn () => __('moonshine::ui.resource.role_title'),
new MoonShineUserRoleResource()
),
])
->linkAttributes(['class' => 'group-button-custom-class'])
];
}
//...
}
Пункты меню можно визуально разделить с помощью MoonShine\Menu\MenuDivider.
MenuDivider::make(Closure|string $label = '')
MenuDivider::make(Closure|string $label = '')
MenuDivider::make(Closure|string $label = '')
MenuDivider::make(Closure|string $label = '')
MenuDivider::make(Closure|string $label = '')
namespace App\Providers;
use App\MoonShine\Resources\ArticleResource;
use App\MoonShine\Resources\CategoryResource;
use MoonShine\Menu\MenuDivider;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuItem::make('Администраторы', new MoonShineUserResource()),
MenuDivider::make(),
MenuItem::make('Роли', new MoonShineUserRoleResource()),
];
}
}
namespace App\Providers;
use App\MoonShine\Resources\ArticleResource;
use App\MoonShine\Resources\CategoryResource;
use MoonShine\Menu\MenuDivider;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuItem::make('Администраторы', new MoonShineUserResource()),
MenuDivider::make(),
MenuItem::make('Роли', new MoonShineUserRoleResource()),
];
}
//...
}
namespace App\Providers;
use App\MoonShine\Resources\ArticleResource;
use App\MoonShine\Resources\CategoryResource;
use MoonShine\Menu\MenuDivider;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuItem::make('Администраторы', new MoonShineUserResource()),
MenuDivider::make(),
MenuItem::make('Роли', new MoonShineUserRoleResource()),
];
}
//...
}
namespace App\Providers;
use App\MoonShine\Resources\ArticleResource;
use App\MoonShine\Resources\CategoryResource;
use MoonShine\Menu\MenuDivider;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuItem::make('Администраторы', new MoonShineUserResource()),
MenuDivider::make(),
MenuItem::make('Роли', new MoonShineUserRoleResource()),
];
}
//...
}
namespace App\Providers;
use App\MoonShine\Resources\ArticleResource;
use App\MoonShine\Resources\CategoryResource;
use MoonShine\Menu\MenuDivider;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuItem::make('Администраторы', new MoonShineUserResource()),
MenuDivider::make(),
MenuItem::make('Роли', new MoonShineUserRoleResource()),
];
}
//...
}

Вы можете использовать текст в качестве разделителя; для этого нужно передать его в метод make()
.
namespace App\Providers;
use App\MoonShine\Resources\ArticleResource;
use App\MoonShine\Resources\CategoryResource;
use MoonShine\Menu\MenuDivider;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuItem::make('Администраторы', new MoonShineUserResource()),
MenuDivider::make('Разделитель'),
MenuItem::make('Роли', new MoonShineUserRoleResource()),
];
}
}
namespace App\Providers;
use App\MoonShine\Resources\ArticleResource;
use App\MoonShine\Resources\CategoryResource;
use MoonShine\Menu\MenuDivider;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuItem::make('Администраторы', new MoonShineUserResource()),
MenuDivider::make('Разделитель'),
MenuItem::make('Роли', new MoonShineUserRoleResource()),
];
}
//...
}
namespace App\Providers;
use App\MoonShine\Resources\ArticleResource;
use App\MoonShine\Resources\CategoryResource;
use MoonShine\Menu\MenuDivider;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuItem::make('Администраторы', new MoonShineUserResource()),
MenuDivider::make('Разделитель'),
MenuItem::make('Роли', new MoonShineUserRoleResource()),
];
}
//...
}
namespace App\Providers;
use App\MoonShine\Resources\ArticleResource;
use App\MoonShine\Resources\CategoryResource;
use MoonShine\Menu\MenuDivider;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuItem::make('Администраторы', new MoonShineUserResource()),
MenuDivider::make('Разделитель'),
MenuItem::make('Роли', new MoonShineUserRoleResource()),
];
}
//...
}
namespace App\Providers;
use App\MoonShine\Resources\ArticleResource;
use App\MoonShine\Resources\CategoryResource;
use MoonShine\Menu\MenuDivider;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuItem::make('Администраторы', new MoonShineUserResource()),
MenuDivider::make('Разделитель'),
MenuItem::make('Роли', new MoonShineUserRoleResource()),
];
}
//...
}

Вы можете отображать пункты меню на основе условий с помощью метода canSee()
.
canSee(Closure $callback)
canSee(Closure $callback)
canSee(Closure $callback)
canSee(Closure $callback)
canSee(Closure $callback)
namespace App\Providers;
use MoonShine\Menu\MenuGroup;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
use MoonShine\Resources\MoonShineUserResource;
use MoonShine\Resources\MoonShineUserRoleResource;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuGroup::make('Система', [
MenuItem::make('Администраторы', new MoonShineUserResource()),
MenuItem::make('Роли', new MoonShineUserRoleResource())
->canSee(fn()=> false)
])
->canSee(function(Request $request) {
return $request->user('moonshine')?->id === 1;
})
];
}
}
namespace App\Providers;
use MoonShine\Menu\MenuGroup;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
use MoonShine\Resources\MoonShineUserResource;
use MoonShine\Resources\MoonShineUserRoleResource;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuGroup::make('Система', [
MenuItem::make('Администраторы', new MoonShineUserResource()),
MenuItem::make('Роли', new MoonShineUserRoleResource())
->canSee(fn()=> false)
])
->canSee(function(Request $request) {
return $request->user('moonshine')?->id === 1;
})
];
}
//...
}
namespace App\Providers;
use MoonShine\Menu\MenuGroup;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
use MoonShine\Resources\MoonShineUserResource;
use MoonShine\Resources\MoonShineUserRoleResource;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuGroup::make('Система', [
MenuItem::make('Администраторы', new MoonShineUserResource()),
MenuItem::make('Роли', new MoonShineUserRoleResource())
->canSee(fn()=> false)
])
->canSee(function(Request $request) {
return $request->user('moonshine')?->id === 1;
})
];
}
//...
}
namespace App\Providers;
use MoonShine\Menu\MenuGroup;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
use MoonShine\Resources\MoonShineUserResource;
use MoonShine\Resources\MoonShineUserRoleResource;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuGroup::make('Система', [
MenuItem::make('Администраторы', new MoonShineUserResource()),
MenuItem::make('Роли', new MoonShineUserRoleResource())
->canSee(fn()=> false)
])
->canSee(function(Request $request) {
return $request->user('moonshine')?->id === 1;
})
];
}
//...
}
namespace App\Providers;
use MoonShine\Menu\MenuGroup;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
use MoonShine\Resources\MoonShineUserResource;
use MoonShine\Resources\MoonShineUserRoleResource;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuGroup::make('Система', [
MenuItem::make('Администраторы', new MoonShineUserResource()),
MenuItem::make('Роли', new MoonShineUserRoleResource())
->canSee(fn()=> false)
])
->canSee(function(Request $request) {
return $request->user('moonshine')?->id === 1;
})
];
}
//...
}
Вы можете установить иконку для пункта меню и группы. Это можно сделать несколькими способами.
Через параметр
Иконку можно установить, передав название в качестве третьего параметра в статическом методе make()
.
namespace App\Providers;
use MoonShine\Menu\MenuGroup;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
use MoonShine\Resources\MoonShineUserResource;
use MoonShine\Resources\MoonShineUserRoleResource;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuGroup::make('Система', [
MenuItem::make('Администраторы', new MoonShineUserResource(), 'heroicons.outline.users'),
MenuItem::make('Роли', new MoonShineUserRoleResource(), 'heroicons.hashtag'),
])
];
}
}
namespace App\Providers;
use MoonShine\Menu\MenuGroup;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
use MoonShine\Resources\MoonShineUserResource;
use MoonShine\Resources\MoonShineUserRoleResource;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuGroup::make('Система', [
MenuItem::make('Администраторы', new MoonShineUserResource(), 'heroicons.outline.users'),
MenuItem::make('Роли', new MoonShineUserRoleResource(), 'heroicons.hashtag'),
])
];
}
//...
}
namespace App\Providers;
use MoonShine\Menu\MenuGroup;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
use MoonShine\Resources\MoonShineUserResource;
use MoonShine\Resources\MoonShineUserRoleResource;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuGroup::make('Система', [
MenuItem::make('Администраторы', new MoonShineUserResource(), 'heroicons.outline.users'),
MenuItem::make('Роли', new MoonShineUserRoleResource(), 'heroicons.hashtag'),
])
];
}
//...
}
namespace App\Providers;
use MoonShine\Menu\MenuGroup;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
use MoonShine\Resources\MoonShineUserResource;
use MoonShine\Resources\MoonShineUserRoleResource;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuGroup::make('Система', [
MenuItem::make('Администраторы', new MoonShineUserResource(), 'heroicons.outline.users'),
MenuItem::make('Роли', new MoonShineUserRoleResource(), 'heroicons.hashtag'),
])
];
}
//...
}
namespace App\Providers;
use MoonShine\Menu\MenuGroup;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
use MoonShine\Resources\MoonShineUserResource;
use MoonShine\Resources\MoonShineUserRoleResource;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuGroup::make('Система', [
MenuItem::make('Администраторы', new MoonShineUserResource(), 'heroicons.outline.users'),
MenuItem::make('Роли', new MoonShineUserRoleResource(), 'heroicons.hashtag'),
])
];
}
//...
}
Через метод
Используйте метод icon()
.
icon(string $icon)
icon(string $icon)
icon(string $icon)
icon(string $icon)
icon(string $icon)
namespace App\Providers;
use MoonShine\Menu\MenuGroup;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
use MoonShine\Resources\MoonShineUserResource;
use MoonShine\Resources\MoonShineUserRoleResource;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuGroup::make('Система', [
MenuItem::make('Администраторы', new MoonShineUserResource())
->icon('heroicons.outline.users'),
MenuItem::make('Роли', new MoonShineUserRoleResource())
->icon('heroicons.hashtag'),
])
->icon('heroicons.cog')
];
}
}
namespace App\Providers;
use MoonShine\Menu\MenuGroup;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
use MoonShine\Resources\MoonShineUserResource;
use MoonShine\Resources\MoonShineUserRoleResource;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuGroup::make('Система', [
MenuItem::make('Администраторы', new MoonShineUserResource())
->icon('heroicons.outline.users'),
MenuItem::make('Роли', new MoonShineUserRoleResource())
->icon('heroicons.hashtag'),
])
->icon('heroicons.cog')
];
}
//...
}
namespace App\Providers;
use MoonShine\Menu\MenuGroup;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
use MoonShine\Resources\MoonShineUserResource;
use MoonShine\Resources\MoonShineUserRoleResource;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuGroup::make('Система', [
MenuItem::make('Администраторы', new MoonShineUserResource())
->icon('heroicons.outline.users'),
MenuItem::make('Роли', new MoonShineUserRoleResource())
->icon('heroicons.hashtag'),
])
->icon('heroicons.cog')
];
}
//...
}
namespace App\Providers;
use MoonShine\Menu\MenuGroup;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
use MoonShine\Resources\MoonShineUserResource;
use MoonShine\Resources\MoonShineUserRoleResource;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuGroup::make('Система', [
MenuItem::make('Администраторы', new MoonShineUserResource())
->icon('heroicons.outline.users'),
MenuItem::make('Роли', new MoonShineUserRoleResource())
->icon('heroicons.hashtag'),
])
->icon('heroicons.cog')
];
}
//...
}
namespace App\Providers;
use MoonShine\Menu\MenuGroup;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
use MoonShine\Resources\MoonShineUserResource;
use MoonShine\Resources\MoonShineUserRoleResource;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuGroup::make('Система', [
MenuItem::make('Администраторы', new MoonShineUserResource())
->icon('heroicons.outline.users'),
MenuItem::make('Роли', new MoonShineUserRoleResource())
->icon('heroicons.hashtag'),
])
->icon('heroicons.cog')
];
}
//...
}
Через атрибут
Пункт меню отобразит иконку, если у класса ModelResource, Page или Resource указан атрибут Icon
, и иконка не переопределена другими способами.
namespace MoonShine\Resources;
#[Icon('heroicons.outline.users')]
class MoonShineUserResource extends ModelResource
{
}
namespace MoonShine\Resources;
#[Icon('heroicons.outline.users')]
class MoonShineUserResource extends ModelResource
{
//...
}
namespace MoonShine\Resources;
#[Icon('heroicons.outline.users')]
class MoonShineUserResource extends ModelResource
{
//...
}
namespace MoonShine\Resources;
#[Icon('heroicons.outline.users')]
class MoonShineUserResource extends ModelResource
{
//...
}
namespace MoonShine\Resources;
#[Icon('heroicons.outline.users')]
class MoonShineUserResource extends ModelResource
{
//...
}
Для более подробной информации обратитесь к разделу Иконки.
Также возможно добавить метку к пункту меню.
Через пункт меню
Чтобы добавить метку к пункту меню, используйте метод badge()
, который принимает замыкание в качестве параметра.
badge(Closure $callback)
badge(Closure $callback)
badge(Closure $callback)
badge(Closure $callback)
badge(Closure $callback)
namespace App\Providers;
use App\Models\Comment;
use App\MoonShine\Resources\CommentResource;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuItem::make('Комментарии', new CommentResource())
->badge(fn() => Comment::count())
];
}
}
namespace App\Providers;
use App\Models\Comment;
use App\MoonShine\Resources\CommentResource;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuItem::make('Комментарии', new CommentResource())
->badge(fn() => Comment::count())
];
}
//...
}
namespace App\Providers;
use App\Models\Comment;
use App\MoonShine\Resources\CommentResource;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuItem::make('Комментарии', new CommentResource())
->badge(fn() => Comment::count())
];
}
//...
}
namespace App\Providers;
use App\Models\Comment;
use App\MoonShine\Resources\CommentResource;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuItem::make('Комментарии', new CommentResource())
->badge(fn() => Comment::count())
];
}
//...
}
namespace App\Providers;
use App\Models\Comment;
use App\MoonShine\Resources\CommentResource;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuItem::make('Комментарии', new CommentResource())
->badge(fn() => Comment::count())
];
}
//...
}
Через метод класса
Для ModelResource, Page или Resource есть альтернативный способ установки метки - метод getBadge()
.
namespace App\MoonShine\Resources;
use App\Models\Post;
use MoonShine\Resources\ModelResource;
class PostResource extends ModelResource
{
public function getBadge(): string
{
return 'новый';
}
}
namespace App\MoonShine\Resources;
use App\Models\Post;
use MoonShine\Resources\ModelResource;
class PostResource extends ModelResource
{
//...
public function getBadge(): string
{
return 'новый';
}
//...
}
namespace App\MoonShine\Resources;
use App\Models\Post;
use MoonShine\Resources\ModelResource;
class PostResource extends ModelResource
{
//...
public function getBadge(): string
{
return 'новый';
}
//...
}
namespace App\MoonShine\Resources;
use App\Models\Post;
use MoonShine\Resources\ModelResource;
class PostResource extends ModelResource
{
//...
public function getBadge(): string
{
return 'новый';
}
//...
}
namespace App\MoonShine\Resources;
use App\Models\Post;
use MoonShine\Resources\ModelResource;
class PostResource extends ModelResource
{
//...
public function getBadge(): string
{
return 'новый';
}
//...
}

Для перевода пунктов меню нужно передать ключ перевода в качестве имени и добавить метод translatable()
translatable(string $key = '')
translatable(string $key = '')
translatable(string $key = '')
translatable(string $key = '')
translatable(string $key = '')
namespace App\Providers;
use App\Models\Comment;
use App\MoonShine\Resources\CommentResource;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuItem::make('menu.Comments', new CommentResource())
->translatable()
MenuItem::make('Comments', new CommentResource())
->translatable('menu')
];
}
}
namespace App\Providers;
use App\Models\Comment;
use App\MoonShine\Resources\CommentResource;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuItem::make('menu.Comments', new CommentResource())
->translatable()
// или
MenuItem::make('Comments', new CommentResource())
->translatable('menu')
];
}
//...
}
namespace App\Providers;
use App\Models\Comment;
use App\MoonShine\Resources\CommentResource;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuItem::make('menu.Comments', new CommentResource())
->translatable()
// или
MenuItem::make('Comments', new CommentResource())
->translatable('menu')
];
}
//...
}
namespace App\Providers;
use App\Models\Comment;
use App\MoonShine\Resources\CommentResource;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuItem::make('menu.Comments', new CommentResource())
->translatable()
// или
MenuItem::make('Comments', new CommentResource())
->translatable('menu')
];
}
//...
}
namespace App\Providers;
use App\Models\Comment;
use App\MoonShine\Resources\CommentResource;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuItem::make('menu.Comments', new CommentResource())
->translatable()
// или
MenuItem::make('Comments', new CommentResource())
->translatable('menu')
];
}
//...
}
return [
'Comments' => 'Комментарии',
];
// lang/ru/menu.php
return [
'Comments' => 'Комментарии',
];
// lang/ru/menu.php
return [
'Comments' => 'Комментарии',
];
// lang/ru/menu.php
return [
'Comments' => 'Комментарии',
];
// lang/ru/menu.php
return [
'Comments' => 'Комментарии',
];
Вы можете использовать инструменты перевода Laravel для перевода меток меню.
namespace App\Providers;
use App\Models\Comment;
use App\MoonShine\Resources\CommentResource;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuItem::make('Комментарии', new CommentResource())
->badge(fn() => __('menu.badge.new'))
];
}
}
namespace App\Providers;
use App\Models\Comment;
use App\MoonShine\Resources\CommentResource;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuItem::make('Комментарии', new CommentResource())
->badge(fn() => __('menu.badge.new'))
];
}
//...
}
namespace App\Providers;
use App\Models\Comment;
use App\MoonShine\Resources\CommentResource;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuItem::make('Комментарии', new CommentResource())
->badge(fn() => __('menu.badge.new'))
];
}
//...
}
namespace App\Providers;
use App\Models\Comment;
use App\MoonShine\Resources\CommentResource;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuItem::make('Комментарии', new CommentResource())
->badge(fn() => __('menu.badge.new'))
];
}
//...
}
namespace App\Providers;
use App\Models\Comment;
use App\MoonShine\Resources\CommentResource;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuItem::make('Комментарии', new CommentResource())
->badge(fn() => __('menu.badge.new'))
];
}
//...
}
Пункт меню может иметь флаг, указывающий, должна ли ссылка открываться в новой вкладке или нет. Это можно реализовать несколькими способами.
Через параметр
Флаг можно установить, передав true/false
или замыкание в статический метод make()
.
namespace App\Providers;
use MoonShine\Menu\MenuGroup;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuGroup::make('Система', [
MenuItem::make('Документация MoonShine', 'https://moonshine-laravel.com/docs', 'heroicons.arrow-up', true),
MenuItem::make('Документация Laravel', 'https://laravel.com/docs', 'heroicons.arrow-up', fn() => true),
])
];
}
}
namespace App\Providers;
use MoonShine\Menu\MenuGroup;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuGroup::make('Система', [
MenuItem::make('Документация MoonShine', 'https://moonshine-laravel.com/docs', 'heroicons.arrow-up', true),
MenuItem::make('Документация Laravel', 'https://laravel.com/docs', 'heroicons.arrow-up', fn() => true),
])
];
}
//...
}
namespace App\Providers;
use MoonShine\Menu\MenuGroup;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuGroup::make('Система', [
MenuItem::make('Документация MoonShine', 'https://moonshine-laravel.com/docs', 'heroicons.arrow-up', true),
MenuItem::make('Документация Laravel', 'https://laravel.com/docs', 'heroicons.arrow-up', fn() => true),
])
];
}
//...
}
namespace App\Providers;
use MoonShine\Menu\MenuGroup;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuGroup::make('Система', [
MenuItem::make('Документация MoonShine', 'https://moonshine-laravel.com/docs', 'heroicons.arrow-up', true),
MenuItem::make('Документация Laravel', 'https://laravel.com/docs', 'heroicons.arrow-up', fn() => true),
])
];
}
//...
}
namespace App\Providers;
use MoonShine\Menu\MenuGroup;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuGroup::make('Система', [
MenuItem::make('Документация MoonShine', 'https://moonshine-laravel.com/docs', 'heroicons.arrow-up', true),
MenuItem::make('Документация Laravel', 'https://laravel.com/docs', 'heroicons.arrow-up', fn() => true),
])
];
}
//...
}
Через метод
Используйте метод blank()
.
blank(Closure|bool $blankCondition = true)
blank(Closure|bool $blankCondition = true)
blank(Closure|bool $blankCondition = true)
blank(Closure|bool $blankCondition = true)
blank(Closure|bool $blankCondition = true)
namespace App\Providers;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuItem::make('Документация MoonShine', 'https://moonshine-laravel.com/docs')
->blank(),
MenuItem::make('Документация Laravel', 'https://laravel.com/docs')
->blank(fn() => true),
];
}
}
namespace App\Providers;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuItem::make('Документация MoonShine', 'https://moonshine-laravel.com/docs')
->blank(),
MenuItem::make('Документация Laravel', 'https://laravel.com/docs')
->blank(fn() => true),
];
}
//...
}
namespace App\Providers;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuItem::make('Документация MoonShine', 'https://moonshine-laravel.com/docs')
->blank(),
MenuItem::make('Документация Laravel', 'https://laravel.com/docs')
->blank(fn() => true),
];
}
//...
}
namespace App\Providers;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuItem::make('Документация MoonShine', 'https://moonshine-laravel.com/docs')
->blank(),
MenuItem::make('Документация Laravel', 'https://laravel.com/docs')
->blank(fn() => true),
];
}
//...
}
namespace App\Providers;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuItem::make('Документация MoonShine', 'https://moonshine-laravel.com/docs')
->blank(),
MenuItem::make('Документация Laravel', 'https://laravel.com/docs')
->blank(fn() => true),
];
}
//...
}
Пункт меню становится активным, если он соответствует url, но метод forceActive()
позволяет принудительно сделать элемент активным.
forceActive(Closure|bool $forceActive)
forceActive(Closure|bool $forceActive)
forceActive(Closure|bool $forceActive)
forceActive(Closure|bool $forceActive)
forceActive(Closure|bool $forceActive)
namespace App\Providers;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuItem::make('Метка', '/endpoint')
->forceActive(fn() => request()->fullUrlIs('*admin/endpoint/*')),
];
}
}
namespace App\Providers;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuItem::make('Метка', '/endpoint')
->forceActive(fn() => request()->fullUrlIs('*admin/endpoint/*')),
];
}
//...
}
namespace App\Providers;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuItem::make('Метка', '/endpoint')
->forceActive(fn() => request()->fullUrlIs('*admin/endpoint/*')),
];
}
//...
}
namespace App\Providers;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuItem::make('Метка', '/endpoint')
->forceActive(fn() => request()->fullUrlIs('*admin/endpoint/*')),
];
}
//...
}
namespace App\Providers;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuItem::make('Метка', '/endpoint')
->forceActive(fn() => request()->fullUrlIs('*admin/endpoint/*')),
];
}
//...
}
Когда вам нужно изменить представление, используя fluent интерфейс, вы можете использовать метод customView()
.
customView(string $path)
customView(string $path)
customView(string $path)
customView(string $path)
customView(string $path)
namespace App\Providers;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuGroup::make('Группа', [
MenuItem::make('Метка', '/endpoint')
->customView('admin.custom-menu-item'),
])
->customView('admin.custom-menu-group'),
];
}
}
namespace App\Providers;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuGroup::make('Группа', [
MenuItem::make('Метка', '/endpoint')
->customView('admin.custom-menu-item'),
])
->customView('admin.custom-menu-group'),
];
}
//...
}
namespace App\Providers;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuGroup::make('Группа', [
MenuItem::make('Метка', '/endpoint')
->customView('admin.custom-menu-item'),
])
->customView('admin.custom-menu-group'),
];
}
//...
}
namespace App\Providers;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuGroup::make('Группа', [
MenuItem::make('Метка', '/endpoint')
->customView('admin.custom-menu-item'),
])
->customView('admin.custom-menu-group'),
];
}
//...
}
namespace App\Providers;
use MoonShine\Menu\MenuItem;
use MoonShine\Providers\MoonShineApplicationServiceProvider;
class MoonShineServiceProvider extends MoonShineApplicationServiceProvider
{
protected function menu(): array
{
return [
MenuGroup::make('Группа', [
MenuItem::make('Метка', '/endpoint')
->customView('admin.custom-menu-item'),
])
->customView('admin.custom-menu-group'),
];
}
//...
}