CMenu hasActiveChild

Предварительное обсуждение найденных ошибок перед отправкой их авторам фреймворка, а также внесение новых предложений.
Ответить
ande
Сообщения: 5
Зарегистрирован: 2013.09.05, 12:51

CMenu hasActiveChild

Сообщение ande »

Пожалуйста объясните откуда в фунции init виджета cmenu берётся переменная $hasActiveChild? Или я не понимающий или же действительно косяк

Код: Выделить всё

//zii.widgets.cmenu
public function init()
    {
        if(isset($this->htmlOptions['id']))
            $this->id=$this->htmlOptions['id'];
        else
            $this->htmlOptions['id']=$this->id;
        $route=$this->getController()->getRoute();

        $this->items=$this->normalizeItems($this->items,$route,$hasActiveChild);
    }
 
хотя из normalizeItems видно что это ссылка но не понятно на что так же в этом же методе используется переменная $hasActiveChild но там же она присвается в false

Код: Выделить всё

protected function normalizeItems($items,$route,&$active)
    {

        foreach($items as $i=>$item)
        {
            ...
            $hasActiveChild=false;
                        ...
                        //Дальше в коде есть бесмысленная проверка на hasActiveChild которую мы перед этим принудительно присвоили в false
                        //Сработает вторая проверка если  $this->activateItems не отключена (по умолчанию включена)
                if($this->activateParents && $hasActiveChild || $this->activateItems && $this->isItemActive($item,$route))
                        ...
    }
 
На github есть тикет https://github.com/yiisoft/yii/issues/2537 но ответ в нём не поясняет ситуации полностью
Объясните пожалуйста
Ответить