Yii2基于视图文件中的表单更新记录

Yii2基于视图文件中的表单更新记录,yii2,Yii2,我试图根据表单中的值更新一个记录字段。表单放置在视图文件中的模式中 查看 Modal::begin([ 'header' => '<h3>Update Payment Reference</h3>', 'toggleButton' => ['label' => 'Pay','class' => 'btn btn-success'], ]); ?> <?php $form = ActiveForm::begin(); ?>

我试图根据表单中的值更新一个记录字段。表单放置在视图文件中的模式中

查看

Modal::begin([
'header' => '<h3>Update Payment Reference</h3>',
'toggleButton' => ['label' => 'Pay','class' => 'btn btn-success'],
]); ?>

<?php $form = ActiveForm::begin(); ?>

    <?= $form->field($model, 'pcpayreference')->textInput(['maxlength' => true]) ?>

    <?= Html::submitButton('Update', ['class' => 'btn btn-primary']) ?>

<?php ActiveForm::end(); ?>
<?php Modal::end();
我是Yii框架的新手。非常感谢您的帮助

编辑

我唯一想做的就是只将这个字段(当前记录/视图)更新到数据库中,而不是更新整个字段


我认为这是有关csrf验证的问题,只需在您的配置中确保启用CSRFValidation:

只需将此功能放入控制器中即可

public function actionPay($id)
{
    $model = Purchase::findOne($id);

    if ($model->load(Yii::$app->request->post()) && $model->save()) {

        $model->pcstatus = 'Paid';
        $model->pcpaydate = date('Y-m-d H:i:s');
        $model->save();

    return $this->redirect(['view', 'id' => $model->pcid]);
    }
}
public function beforeAction($action) {
$this->enableCsrfValidation = false;
return parent::beforeAction($action);
}

请让我知道。

我认为这是有关csrf验证的问题,只需在您的配置中确保启用CSRFValidation:

只需将此功能放入控制器中即可

public function actionPay($id)
{
    $model = Purchase::findOne($id);

    if ($model->load(Yii::$app->request->post()) && $model->save()) {

        $model->pcstatus = 'Paid';
        $model->pcpaydate = date('Y-m-d H:i:s');
        $model->save();

    return $this->redirect(['view', 'id' => $model->pcid]);
    }
}
public function beforeAction($action) {
$this->enableCsrfValidation = false;
return parent::beforeAction($action);
}

请告诉我。

您必须使用id在表单中设置操作,它将起作用

    Modal::begin([
    'header' => '<h3>Update Payment Reference</h3>',
    'toggleButton' => ['label' => 'Pay','class' => 'btn btn-success'],
    ]); ?>

        <?php $form = ActiveForm::begin([
                     'action' => ['controller/pay','id'=>$id],
    ]); ?>

 <?= $form->field($model, 'pcpayreference')->textInput(['maxlength' => true]) ?>

    <?= Html::submitButton('Update', ['class' => 'btn btn-primary']) ?>

<?php ActiveForm::end(); ?>
<?php Modal::end();
Modal::开始([
'标题'=>'更新付款参考',
'toggleButton'=>['label'=>'Pay','class'=>'btn btn success'],
]); ?>

您必须使用id在表单中设置操作,它将起作用

    Modal::begin([
    'header' => '<h3>Update Payment Reference</h3>',
    'toggleButton' => ['label' => 'Pay','class' => 'btn btn-success'],
    ]); ?>

        <?php $form = ActiveForm::begin([
                     'action' => ['controller/pay','id'=>$id],
    ]); ?>

 <?= $form->field($model, 'pcpayreference')->textInput(['maxlength' => true]) ?>

    <?= Html::submitButton('Update', ['class' => 'btn btn-primary']) ?>

<?php ActiveForm::end(); ?>
<?php Modal::end();
Modal::开始([
'标题'=>'更新付款参考',
'toggleButton'=>['label'=>'Pay','class'=>'btn btn success'],
]); ?>


这意味着当你的表单提交时,你会将所有数据放入post/Yii::$app->request->post(),你可以将其转储,否则这将按定义工作。我认为我的活动表单中缺少某些内容,我收到了错误的请求(#400)在提交表单时缺少必需的参数:id。请检查我的答案并尝试底部的第二个解决方案,让我知道。这意味着当你的表单提交时,你会将所有数据放入post/Yii::$app->request->post(),你可以转储它,否则这将按照定义工作。我认为我的活动表单中缺少某些内容,我收到了错误的请求(#400)缺少必需的参数:提交表单时id。请检查我的答案并尝试底部的第二个解决方案,让我知道。我确实尝试了。但奇怪的是,提交后我得到了空白屏幕。尝试调试。。你在后阵列中得到的东西现在起作用了。我不确定是哪一部分导致它以前不能工作,因为我已经试过好几次了。但是在实现了'action'=>['purchase/pay',$model->pcid]之后,它就开始工作了。TQ很高兴帮助您:)我确实尝试过。但奇怪的是,我在提交后得到了一个空白屏幕。请尝试调试。。你在后阵列中得到的东西现在起作用了。我不确定是哪一部分导致它以前不能工作,因为我已经试过好几次了。但是在实现了'action'=>['purchase/pay',$model->pcid]之后,它就开始工作了。我很高兴帮助你:)我把函数放在我的操作之前。但仍然不起作用。正如您之前所说,您将得到#400错误,因此这是解决该问题的方法。我将函数置于操作之前。但仍然不起作用。正如你之前所说,你会得到#400个错误,所以这是解决这个问题的方法。