Композитная форма и значения в multiselect

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
Chelobaka
Сообщения: 126
Зарегистрирован: 2018.06.01, 09:54

Композитная форма и значения в multiselect

Сообщение Chelobaka » 2019.09.11, 16:25

Здравствуйте знатоки,

Есть форма где $this->_owners = [OBJECT-FROM, OBJECT-FORM];

Когда я хочу вывести эту форму то делаю так:

Код: Выделить всё

echo $form->field($model->_owners[0], 'user_id')->dropDownList($owners, $options);
Но из-за того что $model->_owners[0] это форма со своими правилами, она ничего не знает о картине в целом с выбранными owner. То есть selected устанавливаются значения только из этой модели формы. Для решения я сделал так:

Код: Выделить всё

$model->_owners[0]->user_id = $model->getOwnerIds()

.....

 public function getOwnerIds() {
        $ids = [];

        if (isset($this->_owners[0]) && !empty($this->_owners[0])) {

            foreach ($this->_owners as $owner) {
                $ids[] = $owner->user_id;
            }
        }

        return  $ids;
    }
    
То есть в цикле перебираю всё и возвращаю массив.
В итоге получается такая конструкция:

Код: Выделить всё

    $options['class'] = 'selectpicker form-control';
    $options['multiple'] = 'true';
    $model->_owners[0]->user_id = $model->getOwnerIds();
    echo $form->field($model->_owners[0], 'user_id')->dropDownList($owners, $options);    
$_POST в форму заходит так

Код: Выделить всё

Array
(
    [_csrf-frontend] => Qu1KLxhlJYW4REy0iYOhXqZtupiaFax1V7k7Q2fwpWA4vAZBaTYIxM0OHevR4sw90ljcra57nz4DwG0PAp_tJQ==
    [UpdateOwnerForm] => Array
        (
            [user_id] => Array
                (
                    [0] => 9
                    [1] => 11
                )

        )
        .. тут другие модели
Как упростить фрагмент кода с выводом dropdownlist? Так что бы отправлялся тот же $_POST

Ответить