我尝试根据表单中的值更新一个记录字段。表单放在视图文件的模态中。
查看
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框架的新手。非常感谢任何帮助。
修改
我唯一想做的就是只将此字段(当前记录/视图)更新到数据库中,而不是更新整个字段。
答案 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();