Zvook
Новичок
Всем доброго.
Столкнулся с такой ситуацией:
Вывожу мультиселект через виджет CActiveForm:
При сабмите формы, выбранные из него опшены попадают в массив и уходят на обработку в виде:
Вроде бы все ничего, но(!), допустим, если модель не валидна, либо если после обработки контроллер отображает ту же вьюшку и модель с этим массивом из мульселекта, посредством того же кода загоняется обратно в CActiveForm, то значения дублируются! То есть например если у мультиселекте выбрать сначала 1,2, потом засабмититься, потом выбрать 3,4 - засабмититься еще раз, то получится вот что:
И так по нарастающей, то есть если принудительно не очистить массив параметра перед биндом в CActiveForm, то он его просто "допинывает" новыми элементами, не обащая внимания на то, что они уже выбраны. Более того, если сделать "unselect", ну то есть анчекнуть выбранное ранее, то модель на это никак не реагирует и оставляет выбранные значения в массиве...
Баг? или я дурак?
Надеюсь, понятно изложил суть вопроса
Столкнулся с такой ситуацией:
Вывожу мультиселект через виджет 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"
}
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"
} // второй сабмит
Баг? или я дурак?

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