Валидация на клиенте + CForm

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
delfi
Сообщения: 21
Зарегистрирован: 2012.07.19, 07:20

Валидация на клиенте + CForm

Сообщение delfi »

Делал по инструкции форму логина и столкнулся с проблемой.

Если форму составлять вручную, т.е. по view писать все поля, то проблем не возникает, создаю CActiveForm виджет, в нем прописываю enableClientValidation: true и валидация на клиенте работает

Попробовал вариант с созданием CForm, прописываю в файле настроек

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

 'activeForm'             => array(
        'class'                  => 'CActiveForm',
        'enableClientValidation' => TRUE,
        'id'                     => 'fid2',
        'clientOptions'          => array(
            'validateOnSubmit'=> TRUE,
            'validateOnChange'=> TRUE,
            'validateOnType'  => TRUE
        ),
        'focus'                  => array(
            $this::getModel(),
            'password'
        )

    ),
 
Фокус срабатывает, прописывает js код внизу страницы, а вот код для валидации не прописывает и соответственно не работает ничего.
В чем может быть причина?

В контроллере прописано по инструкции

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

    
public function actionLogin(){
        $model = new LoginForm();
        $form  = new CForm('application.views.site.loginForm', $model);
        if($form->submitted('login') && $form->validate()){
            $this->redirect(Yii::app()->user->returnUrl);
        } else {
            $this->render('login', array('form'=> $form));
        }
}
 
Буду рад за любые подсказки.
Аватара пользователя
lancecoder
Сообщения: 2532
Зарегистрирован: 2012.06.26, 17:16

Re: Валидация на клиенте + CForm

Сообщение lancecoder »

так вы настроили CActiveForm а юзаете CForm
delfi
Сообщения: 21
Зарегистрирован: 2012.07.19, 07:20

Re: Валидация на клиенте + CForm

Сообщение delfi »

Не не, настройки в классе, наследующем CForm. А внутри него уже можно прописать настройки CActiveForm.

Проблему нашел, дело в том, что нельзя одновременно делать вывод ошибок у каждого поля в отдельности и воедино все вместе. Стоял параметр, чтобы вывести ошибки в одном блоке, соответственно по полю валидации не происходило.
enchikiben
Сообщения: 127
Зарегистрирован: 2011.12.27, 09:02
Контактная информация:

Re: Валидация на клиенте + CForm

Сообщение enchikiben »

Если я правильно понял проблему, нужно вызывать

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

if(isset($_POST['ajax']) && $_POST['ajax']==='name-form')
{
    echo CActiveForm::validate($comment);
    Yii::app()->end();
}
 
в данном случае ошибки выводятся только у тех полей где они имеются.
delfi
Сообщения: 21
Зарегистрирован: 2012.07.19, 07:20

Re: Валидация на клиенте + CForm

Сообщение delfi »

enchikiben писал(а):Если я правильно понял проблему, нужно вызывать

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

if(isset($_POST['ajax']) && $_POST['ajax']==='name-form')
{
    echo CActiveForm::validate($comment);
    Yii::app()->end();
}
в данном случае ошибки выводятся только у тех полей где они имеются.

Спасибо за код, будет полезен.

Но ошибка закралась в настройке CForm.
showErrorSummary был true. Убрал его и ошибки начали показываться на клиенте
Ответить