Валидация происходит после обновления страницы

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Columbia
Сообщения: 43
Зарегистрирован: 2018.03.28, 14:43

Валидация происходит после обновления страницы

Сообщение Columbia »

Есть форма на которой стоят поля
Если я заполнил неправильно поля и нажал кнопку, то он обновляет страницу и только потом оповещает что валидация не прошла
Как сделать так чтобы он проверял валидацию, без перезагрузки страницы?
Вот view

Код: Выделить всё

<?php $form = ActiveForm::begin(['id' => 'order-form',
                    'enableAjaxValidation' => true,
                    ]) ?>
                        <?$time = date('Y-m-d G:i:s')?>
                        <!-- <input type="text" class="form-control text-center" id="InputEmail" placeholder="Ваше имя" required>
                         <input type="Text" class="form-control text-center" id="InputEmail" placeholder="Ваш номер" required>
                         <input type="text" class="form-control text-center" id="InputEmail" placeholder="Адрес(откуда ехать)" required>
                         <input type="text" class="form-control text-center" id="InputEmail" placeholder="Адрес(куда ехать)" required> -->
                         
                         <?= $form->field($model, 'name', ['enableLabel' => false])->textInput(array('placeholder' => 'Ваше имя', 'class'=>'form-control text-center')); ?>
                         <?= $form->field($model, 'phone', ['enableLabel' => false])->textInput(array('placeholder' => 'Ваш номер', 'class'=>'form-control text-center')); ?>
                         <?= $form->field($model, 'address_from', ['enableLabel' => false])->textInput(array('placeholder' => 'Адрес(откуда ехать)', 'class'=>'form-control text-center','id'=>'suggest')); ?>
                         <?= $form->field($model, 'address_to', ['enableLabel' => false])->textInput(array('placeholder' => 'Адрес(куда ехать)', 'class'=>'form-control text-center','id'=>'suggest1')); ?>
                         <?= $form->field($model, 'message_plus', ['enableLabel' => false])->textInput(array('placeholder' => 'Сообщение(не обязательно)', 'class'=>'form-control text-center')); ?>
                         

                        <!--  <input type="text" class="form-control text-center" id="InputEmail" placeholder="Сообщение(не обязательно) " required> -->
                         <?= Html::submitButton('Заказать', ['class' => 'btn btn-xl btn-submit']) ?>
                        <!-- <button type="submit" class="btn btn-xl btn-submit">Заказать</button> -->
                        <?php ActiveForm::end() ?>
А вот контроллер

Код: Выделить всё

$model = new OrderForm();  
        if($model->load(\Yii::$app->request->post()) && $model->validate()){
          if (!Yii::$app->user->isGuest) {   
        
               $model->username = $user->username;
               $model->date_time = date('Y-m-d G:i:s');
               if($model->save()){
                 Yii::$app->response->redirect(Url::to('http://taxi/'));

            }
             }

            else {
         
               $model->date_time = date('Y-m-d G:i:s');
            if($model->save()){
                 Yii::$app->response->redirect(Url::to('http://taxi/'));

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

       
}
andku83
Сообщения: 988
Зарегистрирован: 2016.07.01, 10:24
Откуда: Харьков

Re: Валидация происходит после обновления страницы

Сообщение andku83 »

https://yiiframework.com.ua/ru/doc/guid ... validation
Смотрите на контроллер
Аватара пользователя
Alexum
Сообщения: 683
Зарегистрирован: 2016.09.26, 10:00

Re: Валидация происходит после обновления страницы

Сообщение Alexum »

Примеры Ajax-валидации через отдельный экшен с поддержкой сценариев и сабмит без перезагрузки всей страницы (н-р в JS можно вызвать перезагрузку контейнера Pjax): https://yiiframework.ru/forum/viewtopic ... 98#p216998
Ответить