Yii, wie zum hervorheben des aktuellen Menüpunktes
Ich verwendete den folgenden code zur Anzeige der Menüpunkte.
Hier standardmäßig den 'Home' - link aktiviert werden soll. So, dass ich den 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)
),
));
Genannten ich die url http://www.yiiframework.com/doc/api/1.1/CMenu#activateItems-detail
Aber ich weiß nicht, wie man diese Parameter verwenden. Bitte helfen Sie
Die activeItems standardmäßig eingeschaltet ist. Haben Sie den HTML-Code für
Ich habe ja die html das class="active" wird nicht angezeigt
Es funktioniert einwandfrei auf meine Websites zu, ohne dass speziell-setup das Attribut active. Vielleicht schauen Sie in der activateParent Attribut (ich vergesse seinen Namen genau). Sind Sie immer aktiv auf einige der sub-Seiten, aber nicht alle?
class="active"
? Auch mit 'active'=>$this->id=='default'?true:false
entfernt von items ?Ich habe ja die html das class="active" wird nicht angezeigt
Es funktioniert einwandfrei auf meine Websites zu, ohne dass speziell-setup das Attribut active. Vielleicht schauen Sie in der activateParent Attribut (ich vergesse seinen Namen genau). Sind Sie immer aktiv auf einige der sub-Seiten, aber nicht alle?
InformationsquelleAutor designersvsoft | 2012-03-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht die Yii Weg, aber die (einfachere) jQuery Weise:
InformationsquelleAutor Ivo Renkema
Den code, den Sie geben, wird in der Regel fand innerhalb eines anzeigen. Die Dokumentation für view besagt, dass
So, wir haben festgestellt, dass in den aktuellen Kontext
$this->id
bezieht sich auf dieCController::id
Eigenschaft. Diese id wird in der Regel als Präfix für den controller-Klassennamen. Zum Beispiel, innerhalbMyController
Sie haben$this->id == "my"
.Mit all diesem im Hinterkopf, kann man nun sagen, dass
active
wirdtrue
wenn und nur wenn die aktuelle Ansicht gerendert, die von innen einen Domänencontroller mit dem NamenDefaultController
. Allerdings, aus derurl
- Eigenschaft des Menüpunktes sehen wir, dass der zugehörige controller für die Aktion (vorausgesetzt default routing)PostController
. Also die$this->id == "default"
Idee ist fehlerhaft.Wenn Sie möchten, stellen Sie die "Home" Element aktiv, wenn alle Aktion in Ihrem
PostController
ausgeführt wird, sollten Sie dies ändern$this->id == "post"
. Normalerweise sollte es nicht notwendig sein, um dies zu tun, weil dieactivateItems
- Eigenschaft (standardmäßigtrue
) verwendet, die mit Standard-routing berücksichtigt sowohl die controller-id und die aktuelle Aktion zu bestimmen, welcher Menüpunkt aktiv stellen.InformationsquelleAutor Jon
wenn Sie einige erweiterte link-Struktur, setzen Sie die folgende Methode im Controller
InformationsquelleAutor cetver
Ich es so:
InformationsquelleAutor Yerkezhan
Menü wird Arbeit, wie wir Sie verwenden Standard-Seiten als Seite/Kontakt site/login
Aber viele Male, die es funktioniert nicht für die Modul-url.
angenommen ich habe Modul Benutzer-und ich hatte die login-action im login-controller, so kann ich unten was im Menü Formular wie der Menüpunkt aktiv wird unten definiert.
Also, wir haben problem zu verschönern url..
InformationsquelleAutor Kiran
Für yiistarterkit fügen Sie einfach diesen code in die _base.php Datei:
Und dann verwenden:
InformationsquelleAutor VeYroN
Nehmen als Basis die Datei yiisoft/yii2-boostrap/nav.php Funktion renderItem():
Und ändern $option $linkOption für einen link.
Als Ergebnis der aktiven-Klasse Hinzugefügt werden a.class statt li.class
InformationsquelleAutor Konstantin