提交表单后,我在重定向方面遇到问题。
第一个:我有此表格供订阅用户使用。
<?php if (Yii::$app->session->hasFlash('success')): ?>
<div class="alert alert-form alert-success text-xs-center">
<?= Yii::$app->session->getFlash('success') ?>
</div>
<?php endif; ?>
<?php Pjax::begin(['id' => 'my-pjax']); ?>
<?php $form = ActiveForm::begin([
'enableAjaxValidation' => true,
'validationUrl' => 'validate',
'options' => [
'class' => 'mbr-form',
'data-pjax' => true,
],
]); ?>
<div class="row row-sm-offset">
<div class="col-md-4 multi-horizontal">
<div class="form-group">
<?= $form->field($model, 'fio')->input('text', ['placeholder' => 'Иванов Иван Иванович'])->label('Ф.И.О',['class' => 'form-control-label mbr-fonts-style display-7']) ?>
</div>
</div>
<div class="col-md-4 multi-horizontal">
<div class="form-group">
<?= $form->field($model, 'email', ['enableAjaxValidation' => true])->input('email', ['placeholder' => 'ivanov.ivan@schoolofwriting.ru'])->label('Email', ['class' => 'form-control-label mbr-fonts-style display-7']) ?>
</div>
</div>
</div>
<span class="input-group-btn"><?= Html::submitButton('ЗАПИСАТЬСЯ', ['class' => 'btn btn-form btn-success display-4']) ?></span>
<?php $form = ActiveForm::end(); ?>
<?php Pjax::end(); ?>
第二个:我有负责表单操作的控制器。
public function actionFree()
{
$this->view->title = "ШКОЛА ПИСАТЕЛЬСКОГО МАСТЕРСТВА: Новичок рассказов";
$model = new SubscribeForm();
$password = $model->generateStrongPassword(12);
$model->course = 1;
$model->password = md5($password);
if($model->load(Yii::$app->request->post()) && $model->save()) {
if ($model->save()) {
Yii::$app->session->setFlash('success', 'Будущий писатель, вскоре ты получишь письмо с инструкцией!
Надеемся, что курс тебе понравится и мы продолжим обучение');
}
else {
Yii::$app->session->setFlash('error', $model->errors);
}
}
else {
// страница отображается первый раз
return $this->render('free-course', ['model' => $model]);
}
}
public function actionValidate() {
$model = new SubscribeForm();
if (Yii::$app->request->isAjax && $model->load(Yii::$app->request->post())) {
Yii::$app->response->format = Response::FORMAT_JSON;
return ActiveForm::validate($model);
}
}
我做什么?我使用电子邮件字段的验证,以便它不会重复,并在表格下输出消息。然后我得到POST数据并将其保存到控制器内部的数据库中。结果,我想设置FLASH MESSAGE并将其显示在当前打开的页面中,而无需重定向和刷新。
所以.. 我总是很高兴。为什么?