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 andviewAnypermission.addMenuItem($label, $url, $permissions = [], $make = null)creates a normal link.addMenuGroup($label, $make)groups related items.addMenuableItem($menuAble)accepts objects implementingMenuAble.
Use setIcon(), setActiveWhenIncludes() and setInactiveWhenIncludes() inside the $make callback when the defaults are not enough.