Yii2 CRUD:如何实现取消按钮
Yii2 CRUD: How to implement Cancel button
我正在学习 Yii 2 框架。我很好奇在典型 CRUD 应用程序的 Create/Update 形式中实现取消按钮的最佳做法是什么。我从 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,
]);
}
它有效,但我坚持进行验证。当用户按下取消按钮时,我想跳过验证。
您正在使用提交按钮取消。这就是表单正在验证的原因。
在提交按钮上使用普通按钮。
替换此行
<?= Html::submitButton(Yii::t('app', 'Cancel'), ['name' => 'cancel', 'class' => 'btn btn-primary']) ?>
有
<?= Html::a(Yii::t('app', 'Cancel'), ['index'], ['class'=>'btn btn-primary']) ?>
您可能正在寻找重置按钮
echo Html::resetButton('Reset', ['class' => 'btn btn-default']);
要取消您需要使用 link
<?= 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
我正在学习 Yii 2 框架。我很好奇在典型 CRUD 应用程序的 Create/Update 形式中实现取消按钮的最佳做法是什么。我从 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,
]);
}
它有效,但我坚持进行验证。当用户按下取消按钮时,我想跳过验证。
您正在使用提交按钮取消。这就是表单正在验证的原因。 在提交按钮上使用普通按钮。
替换此行
<?= Html::submitButton(Yii::t('app', 'Cancel'), ['name' => 'cancel', 'class' => 'btn btn-primary']) ?>
有
<?= Html::a(Yii::t('app', 'Cancel'), ['index'], ['class'=>'btn btn-primary']) ?>
您可能正在寻找重置按钮
echo Html::resetButton('Reset', ['class' => 'btn btn-default']);
要取消您需要使用 link
<?= 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