У меня есть следующая форма:
<?php widgets\Pjax::begin(['id' => 'conference', 'enablePushState' => false]) ?>
<?php $form = ActiveForm::begin(['id' => $model->formName(), enableAjaxValidation' => true, 'validationUrl' => \yii\helpers\Url::toRoute(['validation'])]); ?>
<?php echo $form->field($model, 'eTitle')->textInput(['maxlength' => true])->label(false) ?>
<?= Html::submitButton(Yii::t('app', 'save'), ['class' => 'btn btn-grid']) ?>
<?php ActiveForm::end(); ?>
<?php widgets\Pjax::end();?>
, и я написал follow jquery для ajax:
<?php
$script = <<< JS
$('.conference').on('beforeSubmit', 'form#{$model->formName()}', function(e) {
var \$form = $(this);
$.post(
\$form.attr("action"),
\$form.serialize()
)
.done(function(result) {
var result = $.parseJSON(result);
var responseStatus = result['status'];
switch (responseStatus) {
case 'success':
alert(result['message']);
var url = 'index.php?r=paper-conference/create';
$.pjax.reload({container:'#conferences', url:url, timeout: false , push: false, replace: false});
$('#modal').modal('hide');
break;
case 'fail':
//T0 D0: Change to Message Box
alert(result['message']);
break;
default:
}
}).fail(function() {
//T0 D0: do error log
alert('server error');
});
return false;
});
JS;
$this->registerJs($script);
?>
эта форма отображается двумя способами, как модальная, а иногдакак нормальная форма.когда он отображается как модальный, я хочу сохранить форму и показать alert('successfull')
, а затем закрыть модальный.
если он отображается как обычная форма (не модальная), я хочу сохранить с помощью обратной передачи и не использовать pjax.
на данный момент, он хорошо работает, когда он отображается как модальный, сохраняется, а затем модальный закрывается.но я не знаю, как сделать как нормальную форму и отключить pjax.Я попытался
<?= Html::submitButton(Yii::t('app', 'save'), ['class' => 'btn btn-grid', 'data-pjax' => 0]) ?>
, но он не работает и сохраняется в ajax.
вот мой контроллер:
public function actionCreate()
{
$model = new Conference();
if ($model->load(Yii::$app->request->post())) {
if ($model->save()) {
echo 'successfull';
}
} else {
if (Yii::$app->request->isAjax)
return $this->renderAjax('_form', [
'model' => $model,
]);
return $this->render('_form', [
'model' => $model,
]);
}
}