2016-05-04 7 views
5

Ich habe Nav mit Artikel:Yii2 Nav-Widget: aktives Element

[ 
    'label' => 'All', 
    'url' => ['project/index'], 
], 
[ 
    'label' => 'Done', 
    'url' => ['project/index', 'assigned' => 'done'], 
], 

Aber beide haben eine active Klasse, wenn ich gehe/Index zu projizieren & zugewiesen = getan. Wie kann ich erzwingen, dass diese Klasse nur angehängt wird, wenn der Wert url genau gleich $route ist?

Antwort

1

Nav Widget wird ein Element aktiv, wenn seine Route und Parameter $route übereinstimmen (wenn nicht gesetzt, wird die Route der aktuellen Anforderung verwenden) und $params (wenn nicht gesetzt ist, wird es $ _GET verwenden).

Ihr erster Eintrag wird immer aktiv sein, wenn die Route project/index ist (sehen Sie sich here an).

sollten Sie versuchen, das zum Beispiel:

[ 
    'label' => 'All', 
    'url' => ['project/index', 'assigned' => 'not-done'], 
], 
[ 
    'label' => 'Done', 
    'url' => ['project/index', 'assigned' => 'done'], 
], 

Lesen Sie mehr über how Nav widget set an item active or not.

+0

Vielen Dank für die Links. Sie sind nützlich. – Dmytro

0
$actionId = $this->context->action->id; // the id of the actual action 

$items = [ 
    ['label' => 'All', 'active' => $actionId === 'index', 
     'url' => ['/project/index'], 
    ['label' => 'Done', 'active' => $actionId === 'index' 
     && \Yii::$app->request->get('assigned') === 'done', 
     'url' => ['/project/index', 'assigned' => 'done']] 
]; 
Verwandte Themen