Yii2:“保存草稿”按钮

时间:2018-08-27 15:26:33

标签: validation post yii2

我想要一个带有三个按钮的表格:

  1. 确定按钮:它运行验证并在成功后发布数据。
  2. 取消按钮:跳过验证和发布,并重定向到其他视图。
  3. “保存草稿”按钮:未经验证就发布数据。

我知道如何实现“确定”和“取消”按钮,但是如何防止单击“保存草稿”按钮时进行验证?

2 个答案:

答案 0 :(得分:1)

要绕过仅用于草稿按钮的客户端验证,我建议不要对草稿使用提交按钮,使用普通按钮并使用ajax调用保存草稿,这如果您在字段中输入或模糊显示,则会触发验证,但如果您单击草稿按钮,则不会触发验证。使用$.serialize()获取表单输入并发送调用以另存为草稿。

答案 1 :(得分:0)

希望这对某人有帮助。 解决方法如下:

在视图中将“草稿按钮”添加为普通按钮:

<?= Html::button('Save Draft', ['class' => 'btn btn-default btn-block', 'id' => 'save-draft-btn']) ?>

将JS文件添加到视图中,并为按钮指定onClick事件:

$('#save-draft-btn').on('click', function (e) {
    $.ajax({
       type: 'POST',
       url: draftUrl,
       data: $('#report-index').serialize()
    });      
});

将操作添加到您的控制器:

public function actionSaveDraft($idSupply)
{
    //load models like this
    $report = \app\models\Reports::findOne($idSupply);

    //fill with the POST data
    $report->load(Yii::$app->request->post());
    //save without validation
    $report->save(false); 

    //inform the user on success saving
    Yii::$app->session->setFlash('success', 'Draft Saved');

    //redirect to the editing page
    return $this->redirect(['index', 'idSupply' => $report->id_supply]);

}