Yii2 CRUD: как реализовать кнопку «Отмена»

Я только изучаю фреймворк Yii 2. Мне любопытно, как лучше всего реализовать кнопку «Отмена» в форме «Создать/обновить» типичного приложения CRUD. Я создал CRUD-приложение из пакета Yii 2.0. учебник 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(); ?>

And modified actionUpdate method of CountryController:

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

Это работает, но я застрял с проверкой. Я хочу пропустить проверку, когда пользователь нажимает кнопку «Отмена».


person Alexander Popov    schedule 17.08.2018    source источник
comment
отмена должна обычно очищать форму или сбрасывать форму, вы можете использовать Html::resetButton()   -  person Muhammad Omer Aslam    schedule 18.08.2018


Ответы (3)


Для отмены необходимо использовать ссылку

<?= 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

person Azraar Azward    schedule 25.08.2018
comment
Хорошо, с кнопкой "Отмена" понятно. Но если я хочу иметь кнопку «Сохранить черновик»: POST без проверки? - person Alexander Popov; 27.08.2018

Вы используете кнопку отправки для отмены. Вот почему форма проверяется. Используйте обычную кнопку вместо кнопки «Отправить».

Замените эту строку

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

С

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

может быть, вы ищете кнопку сброса

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