Как избавиться от колхоза при сохранении связанных данных с checkboxlist
Добавлено: 2020.05.05, 12:21
Всем привет
У меня есть несколько вопросов по сохранению связанных данных из формы
Есть модель Post, данные о посте
есть связанныая модель в которой храняться дополнительные данные поста, связь один ко многим
на форме данные из этой таблицы представленны ввиде чек боксов
У меня возникает непонятная ситуация при сохранении, выводе данных пользователю для изменения и обновлении данных из связанных таблиц
При сохранении приходится либо переопределять метод save либо делать вспомогательные методы типа такого
При получении данных для редактирования тоже не все гладко
что бы скормить данные в $form->field сделал вот так :
мне кажется что такое решение нельзя отнести к "лучшим практикам")) поиски стороннего решения результатов особо не дали
Если кто знает более лучшее решение этой задачи прошу поделится ним со мной
У меня есть несколько вопросов по сохранению связанных данных из формы
Есть модель Post, данные о посте
есть связанныая модель в которой храняться дополнительные данные поста, связь один ко многим
на форме данные из этой таблицы представленны ввиде чек боксов
Код: Выделить всё
<div class="col-3"><?= $form->field($model, 'name') ?> </div>
<div class="col-12 check-box-list-admin">
<?= $form->field($userComfort, 'prop_id', [
])->checkboxList($comfort, ['item' => function ($index, $label, $name, $checked, $value) {
if ($checked == 1) $check = 'checked';
else $check = '';
return "<span class='wrap-check-box-list'><input class='checkbox-cabinet' id='{$name}{$value}' type='checkbox' {$check} name='{$name}' value='{$value}'><label class='check-box-list-label' for='{$name}{$value}'>{$label}</label></span>";
}])->label('Удобства:') ?>
</div>
При сохранении приходится либо переопределять метод save либо делать вспомогательные методы типа такого
Код: Выделить всё
public static function save($class, $property, $userId)
{
if (is_array($property)){
foreach ($property as $item){
$object = new $class;
$object->prop_id = $item;
$object->user_id = $userId;
$object->save();
}
}
}
что бы скормить данные в $form->field сделал вот так :
Код: Выделить всё
$userComfort->prop_id = ArrayHelper::getColumn(UserComfort::find()->where(['user_id' => $model->id])->all(), 'prop_id');
Если кто знает более лучшее решение этой задачи прошу поделится ним со мной