activeDropDownList() применение $htmlOptions

Нужно создать выпадающий  список на основании данных  из  модели -  это понятно

CHtml::activeDropDownList($groups,'id_sectors',Groups::model()->sectorsOptions,array('prompt'=>'Значение не из базы'));

причем  нужно  чтобы  один элемент формировался  не из  базы . Если необходимо чтобы  значение этого элемента  была  0 - работает так как  я  написал

Но я  хочу  понять как  пользоваться флагом options

Как  я  понимаю , если  судя документации

CHtml::activeDropDownList($groups,'id_sectors',Groups::model()->sectorsOptions,array('options'=>array('555' => array ('label' => 'Значение не из базы')));

При таком  написании  ошибки  не  происходит , но и  список  создается  на основани  данных  таблицы.

Хочется  добавить, решил остановиться  на  CHtml::activeDropDownList($groups,'id_sectors',Groups::model()->sectorsOptions,array('prompt'=>'Значение не из базы'));

Но значение  этого элемента  ''  и при сохранении    получаю  ошибку,

CDbCommand failed to execute the SQL statement: SQLSTATE[22P02]: Invalid text representation: 7 ERROR: неверный входной синтаксис для integer: ""

Можно  поставить обработчик  перед  сохранением  и  делать  замену,  но  хотелось  бы  сразу  формировать  нормальный  выпадающий  список.

Кто что думает  ,  как  правильно поступить?

Quote

Нужно создать выпадающий  список на основании данных  из  модели -  это понятно

CHtml::activeDropDownList($groups,'id_sectors',Groups::model()->sectorsOptions,array('prompt'=>'Значение не из базы'));

причем  нужно  чтобы  один элемент формировался  не из  базы . Если необходимо чтобы  значение этого элемента  была  0 - работает так как  я  написал

Но я  хочу  понять как  пользоваться флагом options

Как  я  понимаю , если  судя документации

CHtml::activeDropDownList($groups,'id_sectors',Groups::model()->sectorsOptions,array('options'=>array('555' => array ('label' => 'Значение не из базы')));

При таком  написании  ошибки  не  происходит , но и  список  создается  на основани  данных  таблицы.

Ты хочешь чтобы к списку из таблицы добавить пару значений от себя?

Думаю, для этого достаточно слепить вместе два массива, как-нибудь так:

CHtml::activeDropDownList($groups,'id_sectors', array_merge(Groups::model()->sectorsOptions, array('customVal1' => 'customName1', …)))

options в последнем параметре - это для html-атрибутов.

да так  именно и  хочу  сделать,  возможно так  и стоит поступать

но  я  читал  доку  там  так  и написано, что  этот параметр  для  этих  целей  используется  или  я  что-то не так  понял (как  понимать  это:

options: array, specifies additional attributes for each OPTION tag. The array keys must be the option values, and the array values are the extra OPTION tag attributes in the name-value pairs. For example,

    array(

        'value1'=>array('disabled'=>true, 'label'=>'value 1'),

        'value2'=>array('label'=>'value 2'),

    );

)

, тогда пожалуйста  рабочий  пример  с  options -  просто хочу  доконца  разобраться

Quote

Ты хочешь чтобы к списку из таблицы добавить пару значений от себя?

Думаю, для этого достаточно слепить вместе два массива, как-нибудь так:

CHtml::activeDropDownList($groups,'id_sectors', array_merge(Groups::model()->sectorsOptions, array('customVal1' => 'customName1', …)))

options в последнем параметре - это для html-атрибутов.

Параметр options используется для добавления всяких прикольных html-атрибутов к некоторым тегам option.

Вот пример:

<?= CHtml::activeDropDownList($carmodel, 'carmarkId', CHtml::listData($carmarkList, 'id', 'name'), array('class' => 'formInput', 'options' => array('49fb75eb-d4c8-49e6-924c-109cb698f235' => array('style' => 'color:red')))); ?>

В данном случае, я навешиваю css-класс formInput на весь тег select, а при помощи ключа options в том же массиве навешиваю стиль color:red для опции с value="49fb75eb-d4c8-49e6-924c-109cb698f235".

Как-то так.

Спасибо , теперь все  ясно.

Quote

Параметр options используется для добавления всяких прикольных html-атрибутов к некоторым тегам option.

Вот пример:

<?= CHtml::activeDropDownList($carmodel, 'carmarkId', CHtml::listData($carmarkList, 'id', 'name'), array('class' => 'formInput', 'options' => array('49fb75eb-d4c8-49e6-924c-109cb698f235' => array('style' => 'color:red')))); ?>

В данном случае, я навешиваю css-класс formInput на весь тег select, а при помощи ключа options в том же массиве навешиваю стиль color:red для опции с value="49fb75eb-d4c8-49e6-924c-109cb698f235".

Как-то так.

НО всё таки не красится в красный тот option со значением value="49fb75eb-d4c8-49e6-924c-109cb698f235". В коде прописывается, а на деле список весь чёрным как и было. Стиль не срабатывает. Подскажите, что не так?