dblearn94
@dblearn94

Табличный ввод с связанными данными?

есть 2 таблицы:
option - id, name
page_option - id, option_id, lang_id, value

Связи в моделе option сделал:
public function getPageOption()
    {
        return $this->hasOne(PageOption::className(), ['option_id' => 'id']);
    }

Все находит, все работает, но не могу понять, как работать с формой, если у нас табличный ввод?

вот форма:
.. active form begin
foreach ($options as $index => $option) {
    echo $form->field($option, "[$index]pageOption[value]")->label($option->name);
}
.. active form end

Выводит, но только id и name у всех этих полей одинаковое: pageOption[value]

и как работать с этим, непонятно

UPD, с вывобод разобрались, теперь проблема в сохранении связанных данных:

controller/action:
public function actionUpdate()
    {
        $options = Options::find()->with('pageOptions')->indexBy('id');
        
        if (Model::loadMultiple($options , \Yii::$app->request->post()) && Model::validateMultiple($options)) {
           
            foreach ($options  as $option) {
                $setting->save(false);
            }
        }
        
        return $this->render('index', compact("options"));
    }

В итоге:
Model::loadMultiple($options , \Yii::$app->request->post()) - true

но связанные данные не обновились, выходит в них не загружаются новые данные

Подскажите пожалуйста, я явно делаю что-то не так
  • Вопрос задан
  • 92 просмотра
Решения вопроса 1
slo_nik
@slo_nik Куратор тега Yii
if (Model::loadMultiple($options->pageOption , \Yii::$app->request->post()) && Model::validateMultiple($options->pageOption)) {
    foreach ($options->pageOption  as $page) {
                $page->save(false);
    }
}


p.s. Видео в помощь.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы