MasterGerold
@MasterGerold

Как отправить форму pjax yii2?

Доброго времени суток! Есть такая форма:
<?php Pjax::begin( [ 'enablePushState' => false, 'timeout' => 5000, 'id' => 'pjax_form' ] ); ?>
<?php $form = ActiveForm::begin( [
	'options'     => [ 'data-pjax' => true, 'enctype' => 'multipart/form-data', 'class' => 'contact-form' ],
	'id'          => 'upload',
] ); ?>

Поля в ней не ActiveForm а обычные:
<?= Html::activeInput( 'checkbox', $model, 'app_design', [ 'id' => 'app-design' ] ) ?>

И таких несколько, там и activeTextarea и за отправку отвечает:
<?= Html::submitInput( 'Submit', [ 'class' => 'submit' ] ) ?>

Вот контроллер:
public function actionContacts() {

	$model = new Mails();
	if ( $model->load( Yii::$app->request->post() ) && $model->validate() ) {
		$model->save();
		if ( ! Yii::$app->request->isPjax ) {
			Yii::$app->session->setFlash( 'form_sended', '<h2 class="uppercase">Thank You!</h2><p>We will get back to you as soon as possible</p>' );

			return $this->redirect( [ 'contacts#thank-you' ] );
		}
	}

	return $this->render( 'contacts', compact( 'model' ) );
}


UPD: вот что ещё нашел в исходниках страницы:
jQuery('#upload').yiiActiveForm([], []);
jQuery(document).pjax("#pjax_form a", {"push":false,"replace":false,"timeout":5000,"scrollTo":false,"container":"#pjax_form"});
jQuery(document).on("submit", "#pjax_form form[data-pjax]", function (event) {jQuery.pjax.submit(event, {"push":false,"replace":false,"timeout":5000,"scrollTo":false,"container":"#pjax_form"});});

Может тут чего не так?
UPD: вот такое увидел в консоли:
071d2b693e864a7ca69499c3b090ffa9.png
jQuery у меня версии 3.2.1 если что.

После отправки перебрасывает на contacts#thank-you и появляется нужное поле. Но страница получается перезагружается. Подскажите в чем может быть проблема? Заранее благодарен за ответы!
  • Вопрос задан
  • 2652 просмотра
Решения вопроса 2
@karminski
Senior React.JS Developer
Pjax не поддерживает jQuery 3.x
https://github.com/defunkt/jquery-pjax/issues/634

По ссылке выше в комментариях рекомендуют попробовать использовать jquery migrate: https://code.jquery.com/jquery-migrate-3.0.0.js

UPDATE: А нет, работает https://github.com/defunkt/jquery-pjax/issues/634#...
Попробуйте обновить pjax до последней версии
Ответ написан
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
jQuery у меня версии 3.2.1 если что

а значит нет гарантии работоспособности. Так как тестировались все под другую версию. Решили зачем-то сменить - ловите ошибки. Все честно.

Но страница получается перезагружается

Не могу утверждать однозначно, но перезагружается видимо потому что pjax не срабатывает и идет обычный post, а не срабатывает потому что есть ошибки в консоле. C yii2 идет на данный момент jQuery 2.2.4. Так что советую подключить ее и проверить не исчезнут ли ошибки из консоли. Если нет - вернуть Вашу и продолжить поиск. Самое главное в дебаг панеле посмотрите запрос какой идет. Я так подозреваю что обычный post.

PS: как я и думал с версией 3.x.x придется танцы с бубном устраивать: https://github.com/defunkt/jquery-pjax/issues/634
Если не секрет, зачем понадобилась jQuery 3.x.x?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы