Как я могу обрабатывать новые записи реляционной модели в основной модели Activeform Yii2? - PullRequest
0 голосов
/ 11 мая 2019

У меня есть две модели в Yii ... Пользователь и языки ... Языки - это языки, на которых пользователь может говорить.

У меня есть вид обновления для редактирования всего персонала пользователя, и я хотел бы иметь единственную форму для обработки POST в контроллере.

Вид контроллера:

public function actionUpdate($id)
{
    $model = $this->findModel($id);
    // in this model I can access $model->languages to get all the languages of the user

    if ($model->load(Yii::$app->request->post()) && $model->save()) {
        return $this->redirect(['view', 'id' => $model->id]);
    }

    return $this->render('update', [
        'model' => $model,
    ]);
}

Таким образом, форма будет выглядеть так:

$form = ActiveForm::begin(['id' => 'form_cliente']);

echo "<h2>User data</h2>";
echo $form->field($model, 'name')->textInput();
echo $form->field($model, 'lastname')->textInput();
echo $form->field($model, 'city')->textInput();

echo "<h3>Languages</h3>";
foreach ($model->languages as $l) {
   echo $form->field($l, 'user.languages.language')->textInput();
   echo $form->field($l, 'user.languages.level')->textInput();
}

ActiveForm::end();

Проблема в том, что «цикл» не работает, так как я не знаю, как получить доступ к связанным записям модели.

Кроме того, я хотел бы иметь только одну ActiveForm для обработки:

  • данные от модели User
  • данные из языковой модели (модификация записей языков)
  • возможные новые данные из новой языковой вставки
...