Yii Framework Forum: activeDropDownList() применение $htmlOptions - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

activeDropDownList() применение $htmlOptions Rate Topic: -----

#1 User is offline   sergey.leonenko 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 62
  • Joined: 26-March 09

Posted 02 May 2009 - 06:04 AM

Нужно создать выпадающий  список на основании данных  из  модели -  это понятно
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' => 'Значение не из базы')));

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

#2 User is offline   sergey.leonenko 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 62
  • Joined: 26-March 09

Posted 02 May 2009 - 12:50 PM

Хочется  добавить, решил остановиться  на  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' => 'Значение не из базы')));



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

0

#3 User is offline   ORey 

  • Elite Member
  • PipPipPipPipPip
  • Yii
  • Group: Members
  • Posts: 1,701
  • Joined: 20-April 09
  • Location:Moscow, Russia

Posted 02 May 2009 - 01:05 PM

Ты хочешь чтобы к списку из таблицы добавить пару значений от себя?
Думаю, для этого достаточно слепить вместе два массива, как-нибудь так:

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

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

#4 User is offline   sergey.leonenko 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 62
  • Joined: 26-March 09

Posted 02 May 2009 - 01:16 PM

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

но  я  читал  доку  там  так  и написано, что  этот параметр  для  этих  целей  используется  или  я  что-то не так  понял (как  понимать  это:
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-атрибутов.

0

#5 User is offline   ORey 

  • Elite Member
  • PipPipPipPipPip
  • Yii
  • Group: Members
  • Posts: 1,701
  • Joined: 20-April 09
  • Location:Moscow, Russia

Posted 02 May 2009 - 01:36 PM

Параметр 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".

Как-то так.
0

#6 User is offline   sergey.leonenko 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 62
  • Joined: 26-March 09

Posted 02 May 2009 - 01:44 PM

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

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".



Как-то так.

0

#7 User is offline   almix 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 29
  • Joined: 23-September 11

Posted 13 October 2012 - 02:37 PM

View Postsergey.leonenko, on 02 May 2009 - 01:44 PM, said:

Спасибо , теперь все  ясно.
<p class='citation'>Quote</p><div class="blockquote"><div class='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".



Как-то так.</div></div>


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

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users