Проверка Ajax в форме pjax в yii2

Я использую проверку ajax в форме pjax, как это

<?php Pjax::begin(); ?> 
 <?php $form = ActiveForm::begin([
  'id' => 'address-details-form',                                
 'options' => ['class' => 'form-horizontal','data-pjax' => true,],
 'enableAjaxValidation'=>true,
  ]); ?>
 //My form
 <?php ActiveForm::end(); ?>
 <?php Pjax::end(); 

После отправки формы она опубликует некоторые данные модели, подобные этому

"personaldetails-manual_address_line1":["Вы должны ввести адресную строку 1"],"personaldetails-manual_address_line2":["Вы должны ввести адресную строку 2"],"personaldetails-manual_address_line3":["Вы должны ввести адресную строку 3"],"личные данные -manual_address_line4":["Вы должны ввести адресную строку 4"],

На самом деле это правила моей модели, почему это происходит. Но я удаляю проверку ajax, что означает, что она работает нормально, но я хочу проверку ajax.


person Vishva G    schedule 03.08.2016    source источник


Ответы (2)


Вы должны иметь это в своем контроллере

if (Yii::$app->request->isAjax && $model->load(Yii::$app->request->post())) {
    Yii::$app->response->format = Response::FORMAT_JSON;
    return ActiveForm::validate($model);
}

Это должно быть сразу после того, как вы сделаете свой

$model = new [ModelClass]();

Подробнее см. здесь: http://www.yiiframework.com/doc-2.0/guide-input-validation.html#ajax-validation

person Mihai P.    schedule 04.08.2016
comment
Да, я сделал это в своем действии контроллера - person Vishva G; 04.08.2016
comment
вы можете попробовать без 'data-pjax' =› true ? - person Mihai P.; 04.08.2016
comment
Я не думаю, что вы можете заставить работать как pjax, так и ajax, так как они будут наступать друг другу на пальцы ног. сначала заставьте ajax работать, а затем вы можете сделать часть pjax. - person Mihai P.; 04.08.2016
comment
В любом случае сначала выясните, в чем проблема, шаг за шагом, заставьте проверку ajax работать без pjax, затем включите pjax и снова заставьте его работать (если это проблема). - person Mihai P.; 04.08.2016

Наконец, я получил форму pjax с проверкой ajax. Я комбинирую ajax в своем контроллере, как это

 if (Yii::$app->request->isAjax && $model->load(Yii::$app->request->post()) && $model->validate())

Я не знаю, это неправильно, мой друг Ганаса предлагает мне. У меня это работает нормально.

person Vishva G    schedule 04.08.2016