Yii2 CRUD:如何实现“取消”按钮

时间:2018-08-17 13:28:18

标签: yii2 crud cancel-button

我正在学习Yii 2框架。我想知道什么是在典型CRUD应用程序的“创建/更新”表单中实现“取消”按钮的最佳实践。我从Yii 2.0生成了CRUD应用程序。教程https://www.yiiframework.com/doc/guide/2.0/en/start-gii。然后我在_form.php视图中添加了取消按钮

<div class="country-form">

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

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

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

<?= $form->field($model, 'population')->textInput() ?>

<div class="form-group">
    <?= Html::submitButton(Yii::t('app', 'Save'), ['class' => 'btn btn-success']) ?>
    <?= Html::submitButton(Yii::t('app', 'Cancel'), ['name' => 'cancel', 'class' => 'btn btn-primary']) ?>
</div>

<?php ActiveForm::end(); ?>

并修改了CountryController的actionUpdate方法:

public function actionUpdate($id)
{
    $model = $this->findModel($id);

    $request = Yii::$app->request;



    if(null !==(Yii::$app->request->post('cancel'))) {
        return $this->redirect(['index']);
    }


    if ($model->load($request->post()) && $model->save()) {
        //return $this->redirect(['view', 'id' => $model->code]);
        return $this->redirect(['index']);
    }



    return $this->render('update', [
        'model' => $model,
    ]);
}

它可以工作,但是我坚持进行验证。当用户按下“取消”按钮时,我想跳过验证。

3 个答案:

答案 0 :(得分:6)

要取消,您需要使用链接

<?= Html::a('Cancel', ['/controller/action'], ['class'=>'btn btn-primary']) ?>

无论如何重置,您都可以使用按钮

<?= Html::resetButton('Reset', ['class' => 'reset']) ?>

请参阅此文档,以了解如何自定义https://www.yiiframework.com/doc/guide/2.0/en/helper-html

答案 1 :(得分:4)

您正在使用“提交”按钮进行取消。这就是为什么表单正在验证。 在提交按钮上使用普通按钮代替。

替换此行

<?= Html::submitButton(Yii::t('app', 'Cancel'), ['name' => 'cancel', 'class' => 'btn btn-primary']) ?>

使用

<?= Html::a(Yii::t('app', 'Cancel'), ['index'], ['class'=>'btn btn-primary']) ?>

答案 2 :(得分:3)

您是否正在寻找重置按钮

 echo Html::resetButton('Reset', ['class' => 'btn btn-default']);