Меню панели платформы

Suggest edit

Меню панели платформы — важный элемент графического пользовательского интерфейса, так как оно является основной навигацией в проекте.

Использование

Регистрация меню по умолчанию происходит в файле app/Orchid/PlatformProvider.php:

namespace App\Orchid;

use Orchid\Screen\Actions\Menu;
use Orchid\Platform\OrchidServiceProvider;

class PlatformProvider extends OrchidServiceProvider
{
    // ...
    
    public function menu(): array
    {
        return [
            Menu::make('Пример')->url('https://orchid.software/'),
        ];
    }
}

Примечание: При создании каждого элемента автоматически генерируется уникальный ключ, который не должен повторяться. Однако, вы можете вручную изменить ключ, используя метод slug.

Ссылки

Базовое использование:

use Orchid\Screen\Actions\Menu;

Menu::make('Example')->url('https://orchid.software/');

Указание ссылки через маршрут:

Menu::make('Example')->route('route.idea');

Настройка ссылок

Для определения активности ссылки используется пакет dwightwatson/active. Активность ссылок, при использовании route и url, устанавливается автоматически, но допустимо изменение с помощью явного указания:

Menu::make('Example')
    ->route('route.idea')
    ->active('route.idea*');
    
Menu::make('Example')
    ->route('route.idea')
    ->active([
        'route.idea',
        'route.other'
    ]);
    
Menu::make('Example')
    ->url('/pages/contact')
    ->active('not:pages/contact');

Права доступа

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

Menu::make('Example')->permission('platform.idea');

или любая другая проверка возвращающая булево значение:

Menu::make('Example')->canSee(true);

Внешний вид

Для элемента меню можно указать графическую иконку с помощью:

Menu::make('Example')->icon('heart');

Так же, возможно объединение в визуальную группу с помощью установки заголовка для первого элемента:

Menu::make('Example')->title('Analytics');

Порядок отображения

Сортировка устанавливается через задание порядкового номера:

Menu::make('Second')->sort(5);
Menu::make('First')->sort(4);

Уведомления

Пункты меню имеют возможность уведомлять пользователя о каких либо событиях в виде числового значения, для этого:

Menu::make('Comments')
    ->icon('bubbles')
    ->route('platform.systems.comments')
    ->badge(function () {
        return 10;
    });

Вложенное меню

Вы можете указать одноуровневое подменю следующим образом:

Menu::make('Dropdown menu')
    ->icon('code')
    ->list([
        Menu::make('Sub element item 1')->icon('bag')->sort(2),
        Menu::make('Sub element item 2')->icon('heart')->sort(0),
    ]),

Чтобы создать динамическое подменю, вам нужно добавить основной элемент и указать его уникальное имя с помощью метода slug. Затем вы можете добавить к новому элементу другие элементы.

Menu::make('Dropdown menu')
    ->slug('sub-menu')
    ->icon('code')
    ->list([
        Menu::make('Sub element item 1')->icon('bag'),
        Menu::make('Sub element item 2')->icon('heart'),
    ]),

А затем добавляем новые элементы, например:

use Orchid\Support\Facades\Dashboard;

Dashboard::addMenuSubElements('sub-menu', [
    Menu::make('Sub element item 3')->icon('badge')
]);

Our Friends