Yii2根据视图文件中的表单更新记录

时间:2016-10-25 07:55:54

标签: yii2

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

查看

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();

但我不知道如何将这些值传递给我的控制器,以便它可以更新用户输入和提交的内容。

控制器

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]);
    }
}

我是Yii框架的新手。非常感谢任何帮助。

修改

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

enter image description here

2 个答案:

答案 0 :(得分:0)

我认为这是关于csrf验证的问题,只需在配置中确认enableCsrfValidation:

将此功能放入您的控制器

public function beforeAction($action) {
$this->enableCsrfValidation = false;
return parent::beforeAction($action);
}

请告诉我。

答案 1 :(得分:0)

您必须在表单中设置带有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();