@IvanOne

Как сделать валидацию на клиенте Yii?

Есть вот такая форма
<div class="searchForm">
    <?php $form=$this->beginWidget('CActiveForm', array(
        'id'=>'search-form',
        'enableAjaxValidation'=>true,
        'enableClientValidation'=>true,
        'clientOptions' => array(
            'validateOnSubmit' => true,
        )
    )); ?>
    <p class="note">Поля с <span class="required">*</span> обязательны.</p>

    <?php echo $form->errorSummary($model); ?>
    <div class="inputInline">
        <?php
        echo $form->labelEx($model,'departure');
        $this->widget('CAutoComplete',
            array(
            'name'=>'departure',
            'url'=>array('site/autocomplete'),
            'minChars'=>1,
            )
        );
        echo $form->error($model,'departure');
        ?>
    </div>
    <div class="inputInline">
        <?php
        echo $form->labelEx($model,'destination');
        $this->widget('CAutoComplete',
            array(
                'name'=>'destination',
                'url'=>array('site/autocomplete'),
                'minChars'=>1,
            )
        );
        echo $form->error($model,'destination');
        ?>
    </div>
    <div class="inputInline">
    <?php
        echo $form->labelEx($model,'date');
        $this->widget('zii.widgets.jui.CJuiDatePicker',array(
        'name'=>'date',
        'language'=>'ru',
        'options'=>array(
        'showAnim'=>'fold',
        ),
        'htmlOptions'=>array(
        'style'=>'height:20px;'
        ),
        ));
        echo $form->error($model,'date');
    ?>
    </div>
    <div class="inputInline">
        <?php echo CHtml::ajaxSubmitButton('Найти',array('ajax'),array('update'=>".resBlock")); ?>
    </div>
    <?php $this->endWidget(); ?>

Генерируется 3 поля с автозаполнением и один календарь при отправке полей не показывает ошибки, как правильно эту форму организовать? данные с формы уходят так же асинхронно так же вот модель формы
class SearchForm extends CFormModel
{
    public $departure;
    public $destination;
    public $date;
    public function rules()
    {
        return array(
            // username and password are required
            array('departure, destination, date', 'required','message'=>'Поле обязательно для заполнения!'),
            array('date', 'date','format'=>'dd.MM.yyyy','message'=>'Не верно введена дата'),
            array('departure, destination','type','type'=>'string'),
            array('departure, destination, date','safe')
        );
    }

    public function attributeLabels()
    {
        return array(
            'departure'=>'Место отправления',
            'destination'=>'Место назначения',
            'date'=>'Дата'
        );
    }
}
  • Вопрос задан
  • 2684 просмотра
Пригласить эксперта
Ответы на вопрос 1
alexdevid
@alexdevid
web-developer
нужно в контроллере сделать метод который будет проверять валидность и отправлять результат.
к кнопке ajaxSubmitButton прицепить параметры аякс запроса.
подробней тут вот например
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы