Валидация при добавлении полей через ajax?

вот правила валидации в модели

public function rules()
    {
        return [
            [['user_id', 'city_id', 'payment',], 'required'],
            ['street', 'required', 'message' => 'Укажите название улицы.'],
            ...
        ];
    }

вот так я создаю форму
<div class="radio radio-tab">
        <label><input id="delivery1" type="radio" name="Order[delivery]" checked="" value="0"> Самовывоз </label>
</div>
 <div class="radio radio-tab">
             <label> <input id="delivery2" type="radio" name="Order[delivery]" value="1"> Доставка  </label>
</div>
<div class="tab-content">
           <div class="tab-pane delivery1 active">  ... </div>
           <div class="tab-pane delivery2"> </div>
           ...
</div>
<?php ActiveForm::end(); ?>

таким образом формирую ajax запрос
$('.radio-tab input').change(function () {
        var id = $(this).attr('id');
       if(id=='delivery1'){ ... })
       if(id=='delivery2')
           $.ajax({
            method: "POST",
            url: "/cart/delivery",
            data: true,
            success: function (data) {
               ...
                $('.radio-tabs .tab-pane.delivery2').html(data);
                $('.radio-tabs .tab-pane.delivery2').addClass('active');
            }
        })

так обрабатываю его в контролере

public function actionDelivery(){
        $model=new Order();
        return $this->renderAjax('_deliveryPiter',[
            'model'=>$model,
        ]);
    }

и вот так вывожу

...
        <div class="col-xs-12 col-sm-4">
            <div class="form-group field-order-street <?= $model->isAttributeRequired('street') ? 'required' : '' ?>">
                <?= Html::activeLabel($model,'street'); ?>
                <?= Html::activeInput('text',$model,'street',['class'=>'form-control']) ?>
            </div>
...
        </div>

и вроде все выводится но вопрос с валидацией на клиенте остался открытым. То есть если инпут не заполнен, не выводиться сообщение об ошибке, и не правельно заполненая форма отправлется на сервер где соответсвено валидация не проходит. Вопрос как можно организовать вылидацию на клиенте.
  • Вопрос задан
  • 56 просмотров
Пригласить эксперта
Ответы на вопрос 1
Через Html::activeInput ничего валидироваться не будет. нужно использовать ActiveForm.
Рабочий пример https://stackoverflow.com/questions/28394918/yii2-...
Ответ написан
Ваш ответ на вопрос

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

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