Мешает Optgroup

всем привет еще раз

можно ли избавиться от тега optiongroup? ну или сделать так, чтобы ноль из его лэйбла не отражался в выпадающем списке


<optgroup label="0">

...

</optgroup>

А откуда он у вас вообще появляется? Вы в dropDownList передаете не просто массив ключ->значение а категория->(ключ->значение) ?

если б я знал — откуда он у меня появляется! :unsure:

видимо из-за listData

вот мой выпадающий список =


<?php 

  echo $form->dropDownList(

    $model, "id_sect", array(

       CHtml::listData(BSections::model()->findAll(), 'id_sect', 'name'),),

    array('empty'=>'-- выбрать группу --','style'=>'padding:6px;')); 

?>

А что возвращает: CHtml::listData(BSections::model()->findAll(), ‘id_sect’, ‘name’) ?

И еще запятая после этого оператора, меня смущает.

listData возвращает массив, поэтому у вас в dropDownList в 3м параметре получается массив в массиве, что приводит к построению подгрупп в методе listOptions (этот метод вызывается в dropDownList). Как минимум попробуйте так:


<?php 

  echo $form->dropDownList(

    $model, "id_sect", CHtml::listData(BSections::model()->findAll(), 'id_sect', 'name'),

    array('empty'=>'-- выбрать группу --','style'=>'padding:6px;')); 

?>

спасибо! сработало!

если вместо


array(CHtml::listData(BSections::model()->findAll(), 'id_sect', 'name'))

сделать


CHtml::listData(BSections::model()->findAll(), 'id_sect', 'name')

то все работает как надо = optgroup пропадает!

listData позволяет получить данные в нужном формате из связанной таблицы БД (из другой модели) по нужному полю

в моем случае есть две таблицы - в одной статьи, в другой категории статей (группы)

чтобы в админке получить выпадающий список для конкретной статьи с названиями групп статей я и запрашиваю все названия групп статей name с помощью listData из модели BSections связанные с полем id_sect

p.s. эти две таблицы связаны друг с другом с помощью поля id_sect

Тоже с такой проблемой столкнулся. Нолик в списке был. Не знал что делать. Пока сюда не зашел. Спасибо… Тоже массив в массиве был.