Страница 1 из 1

Ошибка в zii.widgets.CMenu

Добавлено: 2013.12.14, 15:44
glamurchik

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

<?php
$this->widget('zii.widgets.CMenu', array(
                'items' => array(
                array(
                    'label'=>'Каталог', 
                    'url'=>array('#'),
                    'items'=>array(
                        array('label'=>'1.0 Подкатегория', 'url'=>array('#'), 'items'=>array(
                            array('label'=>'1.1. СубПодкатегория', 'url'=>array('#')),
                            array('label'=>'1.2. СубПодкатегория', 'url'=>array('#')),
                            array('label'=>'1.3. СубПодкатегория', 'url'=>array('#')),
                            array('label'=>'1.4. СубПодкатегория', 'url'=>array('#')),
                        )),
                        'submenuHtmlOptions' => array(
                            'class' => 'dropdown-menu',
                        )
                    ),
                ),                
                array('label'=>'2.0 Подкатегория', 'url'=>array('#')),
                ),
                'submenuHtmlOptions' => array(
                    'class' => 'dropdown-submenu',
                )
            ));
?>
По идее должно строить:

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

<ul>
<li><a href="#">Каталог</a>
     <ul class="dropdown-submenu">
     <li><a href="#">1.0 Подкатегория</a>
          <ul class="dropdown-menu"><!--  Вот здесь dropdown-submenu -->
               <li><a href="#">1.1. СубПодкатегория</a></li>
               <li><a href="#">1.2. СубПодкатегория</a></li>
               <li><a href="#">1.3. СубПодкатегория</a></li>
               <li><a href="#">1.4. СубПодкатегория</a></li>
          </ul>
     </li>
     <li><a href="#">2.0 Подкатегория</a>
     </ul>
</li>
</ul>
Почему ж submenuHtmlOptions перекрывает своих потомков? Или submenuHtmlOptions только действует на первый уровень? Может есть какой-то костыль назначить третьему UL свой класс?

Re: Ошибка в zii.widgets.CMenu

Добавлено: 2013.12.15, 00:02
Ekstazi
Потому что вы его перекрыли:

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

                array(
                    'label'=>'Каталог', 
                    'url'=>array('#'),
                    'items'=>array(
                        array('label'=>'1.0 Подкатегория', 'url'=>array('#'), 'items'=>array(
                            array('label'=>'1.1. СубПодкатегория', 'url'=>array('#')),
                            array('label'=>'1.2. СубПодкатегория', 'url'=>array('#')),
                            array('label'=>'1.3. СубПодкатегория', 'url'=>array('#')),
                            array('label'=>'1.4. СубПодкатегория', 'url'=>array('#')),
                        )),
                        'submenuHtmlOptions' => array(
                            'class' => 'dropdown-menu',
                        )
                    ),
 

Re: Ошибка в zii.widgets.CMenu

Добавлено: 2013.12.15, 03:39
glamurchik
Вы так и не вникли... Че я там перекрыл в каком месте?

Re: Ошибка в zii.widgets.CMenu

Добавлено: 2013.12.15, 11:47
Ekstazi
submenuHtmlOptions действует так:
1) Если вы указали его глобально(через CMenu::$submenuHtmlOptions), то он действует для всех подуровней.
2) Если вы хотите переопределить его для какого-то конкретного подуровня и только для него (на вложеные подуровни не подействует), то используйте $item[''submenuHtmlOptions']
Вы использовали оба случая в примере. Это стандартное поведение.

Re: Ошибка в zii.widgets.CMenu

Добавлено: 2013.12.15, 13:36
glamurchik
А как тогда задать два разных класса для 2-го и 3-го UL?

Re: Ошибка в zii.widgets.CMenu

Добавлено: 2013.12.15, 22:55
Ekstazi
Для 3-го через submenuHtmlOptions во втором уровне. А для второго через CMenu::$submenuHtmlOptions