如何在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中为相关模型创建插入和更新操作的表单?的主要内容,如果未能解决你的问题,请参考以下文章

yii2.0 如何创建from表单

如何在 APEX 4.1 中为单项表单创建更新流程

在使用pjax重新加载gridview后,在gridview上的Yii2模态表单更新没有显示

如何在具有棱镜的Xamarin表单中为contentview创建单独的视图模型?

当dbcontext中有多个模型时,如何创建一个空模型以传递给插入更新视图?

如何在 Django 管理员中为模型字段使用自定义表单字段?