Yii comment faire pour mettre en surbrillance l'élément de menu actuellement
J'ai utilisé le code suivant pour afficher les éléments de menu.
Ici par défaut la "Maison" lien doit être activé. De sorte que j'ai utilisé le code
active' => $this->id =='default' ? true : false
$this->widget('zii.widgets.CMenu',array(
'linkLabelWrapper' => 'span',
'items'=>array(
array('label'=>'Home', 'url'=>array('post/index'),'active'=>$this->id=='default'?true:false),
array('label'=>'About', 'url'=>array('site/page', 'view'=>'about'),'active'=>$this->id=='about'?true:false),
array('label'=>'Test', 'url'=>array('site/page', 'view'=>'test')),
array('label'=>'Contact', 'url'=>array('site/contact')),
array('label'=>'Login', 'url'=>array('site/login'), 'visible'=>Yii::app()->user->isGuest),
array('label'=>'Logout ('.Yii::app()->user->name.')', 'url'=>array('site/logout'), 'visible'=>!Yii::app()->user->isGuest)
),
));
J'ai renvoyé l'url http://www.yiiframework.com/doc/api/1.1/CMenu#activateItems-detail
Mais je ne sais pas comment utiliser ces paramètres. S'il vous plaît aider
Le activeItems par défaut est activée. Avez-vous vérifié votre HTML pour
Oui j'ai vérifié le code html de la classe="active" n'est pas affiché
Il fonctionne correctement sur mes sites sans avoir besoin spécifiquement de la configuration de l'attribut actif. Vous devriez regarder dans le activateParent attribut (j'ai oublié son nom exactement). Êtes-vous actif sur certains des sous-pages, mais pas tous?
class="active"
? Même avec 'active'=>$this->id=='default'?true:false
supprimés à partir d'éléments ?Oui j'ai vérifié le code html de la classe="active" n'est pas affiché
Il fonctionne correctement sur mes sites sans avoir besoin spécifiquement de la configuration de l'attribut actif. Vous devriez regarder dans le activateParent attribut (j'ai oublié son nom exactement). Êtes-vous actif sur certains des sous-pages, mais pas tous?
OriginalL'auteur designersvsoft | 2012-03-21
Vous devez vous connecter pour publier un commentaire.
Pas la Yii façon, mais l' (plus simple) de jQuery façon:
OriginalL'auteur Ivo Renkema
Le code vous sera généralement trouvé à l'intérieur d'un vue. La documentation pour les états d'affichage que
Donc, nous avons établi que, dans le contexte actuel,
$this->id
se réfère à laen Hérite::id
de la propriété. Cet identifiant sera généralement le préfixe de votre contrôleur nom de la classe. Par exemple, à l'intérieur deMyController
vous aurez$this->id == "my"
.Avec tout cela à l'esprit, vous pouvez maintenant dire que
active
seratrue
si et seulement si la vue est rendue dans un contrôleur nomméDefaultController
. Cependant, à partir de laurl
propriété de cet élément de menu, nous voyons que le contrôleur associé à cette action (en supposant que le routage par défaut) estPostController
. Ainsi, le$this->id == "default"
idée est défectueux.Si vous voulez faire de la "Maison" de l'élément actif dès tout action dans votre
PostController
est en cours d'exécution, vous devez changer ce$this->id == "post"
. Normalement il ne devrait pas être nécessaire de le faire, parce que leactivateItems
de propriété (qui est par défauttrue
) utilisé avec un routage par défaut sera de prendre en compte à la fois l'id de contrôleur et l'action en cours pour déterminer quel élément de menu pour le rendre actif.OriginalL'auteur Jon
si vous avez quelques avancées structure des liens, mettre la méthode ci-dessous dans le Contrôleur de
OriginalL'auteur cetver
J'ai utilisé de cette façon:
OriginalL'auteur Yerkezhan
Le menu de travail que nous utilisons par défaut des pages du site/contact /site/login
Mais de nombreuses fois, il ne fonctionnera pas pour le module d'url.
supposons que j'ai de l'utilisateur du module et j'ai eu action login de connexion du contrôleur, donc je peux le faire en dessous de chose formulaire de menu comme la façon dont l'élément de menu s'active définie ci-dessous.
Donc, nous pouvons avoir de problème pour embellir url..
OriginalL'auteur Kiran
Pour yiistarterkit il suffit d'ajouter ce code dans le _base.php fichier:
Et ensuite utiliser:
OriginalL'auteur VeYroN
Prendre comme base le fichier yiisoft/yii2-boostrap/nav.php fonction renderItem():
Et modifier $option sur $linkOption pour un lien.
Comme résultat de la classe active sera ajouté à a.class au lieu li.class
OriginalL'auteur Konstantin