2016-05-04 9 views
5

मैं आइटम के साथ Nav है:Yii2 एनएवी विजेट: सक्रिय मद

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

लेकिन उन दोनों को एक active वर्ग है जब मैं परियोजना/सूचकांक & सौंपा = किया पर जाएं। मैं इस वर्ग को केवल तभी संलग्न करने के लिए मजबूर कर सकता हूं यदि आइटम का url सख्ती से $route मान के बराबर है?

उत्तर

1

Nav विजेट एक आइटम सक्रिय जब उसके मार्ग और मानकों $route से मेल खाते हैं और $params (यदि सेट नहीं है, यह $ _GET उपयोग किया जाएगा) (यदि सेट नहीं है, यह वर्तमान अनुरोध के मार्ग का उपयोग करेगा) कर देगा।

यदि आपका मार्ग project/index है (here देखें) तो आपका पहला आइटम हमेशा सक्रिय रहेगा।

उदाहरण के लिए आप इस प्रयास करना चाहिए:

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

how Nav widget set an item active or not बारे में अधिक पढ़ें।

+0

लिंक के लिए धन्यवाद। वे उपयोगी हैं। – 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']] 
];