Menu manager used for build hierarchical menu. This is automatically look of user role and permision then return menus that he has access.
use rbac\components\MenuHelper;
use yii\bootstrap\Nav;
echo Nav::widget([
'items' => MenuHelper::getAssignedMenu(Yii::$app->user->id)
]);
Return of rbac\components\MenuHelper::getAssignedMenu()
has default format like:
[
[
'label' => $menu['name'],
'url' => [$menu['route']],
'items' => [
[
'label' => $menu['name'],
'url' => [$menu['route']]
],
....
]
],
[
'label' => $menu['name'],
'url' => [$menu['route']],
'items' => [
[
'label' => $menu['name'],
'url' => [$menu['route']]
]
]
],
....
]
where $menu
variable corresponden with a record of table menu
. You can customize
return format of rbac\components\MenuHelper::getAssignedMenu()
by provide a callback to this methode.
The callback must have format function($menu){}
. E.g:
You can add html options attribut to Your menu, for example "title". When You create a menu, in field data (textarea) fill this :
and then in Your view:
php $callback = function($menu){
$data = eval($menu['data']);
return [
'label' => $menu['name'],
'url' => [$menu['route']],
'options' => $data,
'items' => $menu['children']
];
}
$items = MenuHelper::getAssignedMenu(Yii::$app->user->id, null, $callback);
Default result is get from `cache`. If you want to force regenerate, provide boolean `true` as forth parameter.
You can modify callback function for advanced usage.
Using Sparated Menu
-------------------
Second parameter of `rbac\components\MenuHelper::getAssignedMenu()` used to get menu on it's own hierarchy.
E.g. Your menu structure:
* Side Menu
* Menu 1
* Menu 1.1
* Menu 1.2
* Menu 1.3
* Menu 2
* Menu 2.1
* Menu 2.2
* Menu 2.3
* Top Menu
* Top Menu 1
* Top Menu 1.1
* Top Menu 1.2
* Top Menu 1.3
* Top Menu 2
* Top Menu 3
* Top Menu 4
You can get 'Side Menu' chldren by calling
php $items = MenuHelper::getAssignedMenu(Yii::$app->user->id, $sideMenuId); ```
It will result in