вот правила валидации в модели
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>
и вроде все выводится но вопрос с валидацией на клиенте остался открытым. То есть если инпут не заполнен, не выводиться сообщение об ошибке, и не правельно заполненая форма отправлется на сервер где соответсвено валидация не проходит. Вопрос как можно организовать вылидацию на клиенте.