Davey
(Davey975)
January 21, 2014, 2:09pm
1
I got a little suggestion for the Menu widget (yii\widgets\Menu). It would be nice if you could set the visibility of a single submenu as well. What i have to do now is to set the visibility for all the items inside a submenu one by one:
See my example below, what i have to do now:
echo Menu::widget([
'items' => [
['label' => Yii::t('frontend/user', 'Settings'),
'url' => ['site/index']
],
['label' => Yii::t('frontend/user', 'Photos'),
'url' => ['site/index']
],
['label' => Yii::t('frontend/messages', 'Messages'),
'url' => ['message/index'],
'items' => [
[
'label' => Yii::t('frontend/messages', 'Inbox'),
'url' => ['message/index'],
'visible' => (Yii::$app->controller->getRoute() == 'message/index')
],
[
'label' => Yii::t('frontend/messages', 'Sent'),
'url' => ['message/index'],
'visible' => (Yii::$app->controller->getRoute() == 'message/index')
],
[
'label' => Yii::t('frontend/messages', 'Trash'),
'url' => ['message/index'],
'visible' => (Yii::$app->controller->getRoute() == 'message/index')
],
],
],
],
]);
I’m not sure if it’s a good idea though, since it’s acting the same as the ‘main’ items, but off course it’s not logic to set the visibility of the ‘main’ items as well.
outrage
(Site Sense Web)
January 24, 2014, 3:04pm
2
Davey:
I got a little suggestion for the Menu widget (yii\widgets\Menu). It would be nice if you could set the visibility of a single submenu as well. What i have to do now is to set the visibility for all the items inside a submenu one by one:
See my example below, what i have to do now:
echo Menu::widget([
'items' => [
['label' => Yii::t('frontend/user', 'Settings'),
'url' => ['site/index']
],
['label' => Yii::t('frontend/user', 'Photos'),
'url' => ['site/index']
],
['label' => Yii::t('frontend/messages', 'Messages'),
'url' => ['message/index'],
'items' => [
[
'label' => Yii::t('frontend/messages', 'Inbox'),
'url' => ['message/index'],
'visible' => (Yii::$app->controller->getRoute() == 'message/index')
],
[
'label' => Yii::t('frontend/messages', 'Sent'),
'url' => ['message/index'],
'visible' => (Yii::$app->controller->getRoute() == 'message/index')
],
[
'label' => Yii::t('frontend/messages', 'Trash'),
'url' => ['message/index'],
'visible' => (Yii::$app->controller->getRoute() == 'message/index')
],
],
],
],
]);
I’m not sure if it’s a good idea though, since it’s acting the same as the ‘main’ items, but off course it’s not logic to set the visibility of the ‘main’ items as well.
Is it not as simple as moving the ‘visible’ option?
This will hide the whole sub-menu:
echo Menu::widget([
'items' => [
['label' => Yii::t('frontend/user', 'Settings'),
'url' => ['site/index']
],
['label' => Yii::t('frontend/user', 'Photos'),
'url' => ['site/index']
],
['label' => Yii::t('frontend/messages', 'Messages'),
'url' => ['message/index'],
// CHANGE HERE
'visible' => (Yii::$app->controller->getRoute() == 'message/index'),
'items' => [
[
'label' => Yii::t('frontend/messages', 'Inbox'),
'url' => ['message/index']
],
[
'label' => Yii::t('frontend/messages', 'Sent'),
'url' => ['message/index']
],
[
'label' => Yii::t('frontend/messages', 'Trash'),
'url' => ['message/index']
],
],
],
],
]);
Davey
(Davey975)
January 24, 2014, 3:33pm
3
Yes, but it will hide the ‘parent’ item as well, i only want to hide the submenu.