Skip to main content

Menu

The menu is part of the globals payload. It exists so the app layout can render navigation from backend definitions and permissions.

Menu classes live in Qore\Next\System\Menu.

For normal CRUD sections, prefer addResourceMenuItem(). It keeps the label, icon, URL and permissions in sync with the resource.

use Qore\Next\System\Menu\Menu;

$menu = new Menu;

$menu
->addResourceMenuItem(qore()->getResourceOrFail('users'))
->addMenuGroup('Settings', function ($group) {
$group
->setIcon('settings_2')
->addMenuItem('Preferences', '/preferences');
});

Items

  • addResourceMenuItem($resource) uses the resource label, index URL, icon and viewAny permission.
  • addMenuItem($label, $url, $permissions = [], $make = null) creates a normal link.
  • addMenuGroup($label, $make) groups related items.
  • addMenuableItem($menuAble) accepts objects implementing MenuAble.

Use setIcon(), setActiveWhenIncludes() and setInactiveWhenIncludes() inside the $make callback when the defaults are not enough.