Задать вопрос
@Artemmmm13

Как получить ошибки ajax валидации формы вне метода field Yii2?

Нужно реализовать сохранение данных без перезагрузки страницы, соответсвенно ошибки тоже нужно выводить без перезагрузки. Реализовал следующую валидацию:
<?php $form = ActiveForm::begin([
        'id' => 'create-order-form',
        'enableAjaxValidation' => true,
        'validateOnSubmit' => true,
        'validateOnType' => false,
        'validateOnChange' => false,
        'validationUrl' => Url::toRoute(['/order/validate-form']),
        'options' => [
            'class' => 'order-form',
        ],
        'fieldConfig' => [
            'options' =>
            [
                'tag' => false,
            ]
        ],
    ])?>
    <div class="row">
//Тут хочу вывести ошибки
    <?php Pjax::begin(['id' => 'form-errors']);?>
        <?php if($model->hasErrors()):?>
            <?php foreach ($model->getErrors() as $key => $value):?>
                <div class="alert alert-danger w-100 text-center" role="alert">
                    <?= $value[0];?>
                </div>
            <?php endforeach;?>
        <?php endif;?>
    <?php Pjax::end();?>
    </div>
//Поля формы

Метод валидации:
public function actionValidateForm()
    {
        if(Yii::$app->request->isAjax) 
        {
            Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;

            $model = new CreateOrder();

            if($model->load(Yii::$app->request->post()))
            {
                return ActiveForm::validate($model);
            }
        }
        
        throw new \yii\web\BadRequestHttpException('Bad request!');   
    }

Js код который должен обновить Pjax
$('#create-order-form').on('afterValidate',function(){

		$.pjax.defaults.timeout = 3000;

		$.pjax.reload({container: '#form-errors'});
	});

В консоли ошибки приходят, но почему то в блоке где я хочу вывести ошибки они не появляются. Дело в том что стандартный вывод ошибок мне не подходит по этому в 'template' я убрал поля ошибок и хочу вывести отдельно.
Думаю ошибка в том что я не правильно вывожу их. В документации и на форумах показано как сделать ajax валидацию но я нигде не нашел как получить ошибки отдельно от метода ActiveForm field.
  • Вопрос задан
  • 209 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@AlexPitTech
backend php developer
в данном случае вам следует определиться, либо вы pjax подгружаете страницу (метод actionValidateForm ничем вам не поможет), или вы ajax валидируете форму (тут pjax вам ничем не поможет).
Ответ написан
Ваш ответ на вопрос

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

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