YiiFramework CActiveForm multiselect

Zvook

Новичок
Всем доброго.

Столкнулся с такой ситуацией:

Вывожу мультиселект через виджет CActiveForm:
PHP:
echo $form->dropDownList(
            $model,
            'districts',
            CHtml::listData(District::model()->findAllByAttributes(array('city_id' => 1)),'id','name'), array('multiple' => "multiple"))
При сабмите формы, выбранные из него опшены попадают в массив и уходят на обработку в виде:
PHP:
array(3) {
  [0]=>
  string(2) "10"
  [1]=>
  string(1) "7"
  [2]=>
  string(1) "1"
}
Вроде бы все ничего, но(!), допустим, если модель не валидна, либо если после обработки контроллер отображает ту же вьюшку и модель с этим массивом из мульселекта, посредством того же кода загоняется обратно в CActiveForm, то значения дублируются! То есть например если у мультиселекте выбрать сначала 1,2, потом засабмититься, потом выбрать 3,4 - засабмититься еще раз, то получится вот что:
PHP:
array(2) {
  [0]=>
  string(1) "1"
  [1]=>
  string(1) "2"
} // первый сабмит

array(6) {
  [0]=>
  string(1) "1"
  [1]=>
  string(1) "2"
  [2]=>
  string(1) "1"
  [3]=>
  string(1) "2"
  [4]=>
  string(1) "3"
  [5]=>
  string(1) "4"
} // второй сабмит
И так по нарастающей, то есть если принудительно не очистить массив параметра перед биндом в CActiveForm, то он его просто "допинывает" новыми элементами, не обащая внимания на то, что они уже выбраны. Более того, если сделать "unselect", ну то есть анчекнуть выбранное ранее, то модель на это никак не реагирует и оставляет выбранные значения в массиве...

Баг? или я дурак? :)

Надеюсь, понятно изложил суть вопроса :)
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
не надо делать запрос к базе из шаблона.
модель не может быть невалидной, невалидными могут быть только данные.

лучше тебе не использовать yii
 

Zvook

Новичок
не надо делать запрос к базе из шаблона.
Вы об этом?
PHP:
District::model()->findAllByAttributes(array('city_id' => 1)
модель не может быть невалидной, невалидными могут быть только данные.
Да понятно. У меня класс отнаследованный от CFormModel(). Я не знаю как его правильно назвать - модель или форма )). Так вот эта форма поисковая, с кучей параметров, то есть при сабмите, происходит запрос, после чего отображается та же самая вьюшка и выбранные условия поиска "сохраняются" в модели(форме). И при повторных сабмитах, происходит то, что я описал выше.

лучше тебе не использовать yii
Возможно. Но было бы здорово, если бы вы объяснили, что я такого катастрофически не правильного сделал, что вы сделали такой вывод?
 
Сверху