如何在Yii2中为相关模型创建插入和更新操作的表单?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Yii2中为相关模型创建插入和更新操作的表单?相关的知识,希望对你有一定的参考价值。
我有两个模型:qazxsw poi,qazxsw poi。在qazxsw poi模型中,与S
存在Sp
关系。
在Sp
我有两个动作,hasOne()
和S
,如下:
SpController
和
insert
在update
我有一个与public function actionCreate()
{
$model = new Sp();
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'id' => $model->id]);
}
return $this->render('create', [
'model' => $model,
]);
}
相关的字段,如下所示:
public function actionUpdate($id)
{
$model = $this->findModel($id);
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'id' => $model->id]);
}
return $this->render('update', [
'model' => $model,
]);
}
由于关系,它在更新操作中工作正常,但它会在创建操作中抛出sp/views/_form.php
上不存在S
的错误。
如何在create动作中绑定<?= $form->field($model->s, 'name')->textInput(['maxlength' => true]) ?>
字段?
如果要以这种方式使用关系模型,则需要手动创建它。不要忘记实际保存来自s
模型的数据。
<?= $form->field($model->s, 'name')->textInput(['maxlength' => true]) ?>
但您应该考虑创建专用表单模型而不是直接使用Active Record。它将使视图和控制器更加简单。
我认为实现目标的正确方法是创建一个FormModel,它具有您需要的所有属性(在本例中为S对象的'name'),并在视图中使用它,如:
name
以上是关于如何在Yii2中为相关模型创建插入和更新操作的表单?的主要内容,如果未能解决你的问题,请参考以下文章
在使用pjax重新加载gridview后,在gridview上的Yii2模态表单更新没有显示
如何在具有棱镜的Xamarin表单中为contentview创建单独的视图模型?