У меня есть две модели в 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
- данные из языковой модели (модификация записей языков)
- возможные новые данные из новой языковой вставки