Yii: Не работает Ajax валидация у формы. Не подключается файл jquery.yiiactiveform.js

Нет картинки При включённой ajax валидации ('enableAjaxValidation'=>true) она не срабатывает, не подключается файл jquery.yiiactiveform.js

Ошибка возникает при установлении 'enableAjaxValidation'=>true в форме обратной связи например. Это происходит если вы забыли прописать в виде (views/site/contact.php) формы вывод сообщения об ошибке $form->error. Обычно у каждого поля нужно написать:

<div class="row">
		<?php echo $form->labelEx($model,'email'); ?>
		<?php echo $form->textField($model,'email',array('size'=>60,'maxlength'=>128)); ?>
		<?php echo $form->error($model,'email'); ?>
	</div>

Так часто бывает, когда изначально была отключена Ajax валидация и был объявлен блок 

<?php echo $form->errorSummary($model); ?>

выводящий все ошибки. Потом вы установили в true свойство enableAjaxValidation. Но для того, чтобы Yii подключил скрипт jquery.yiiactiveform.js в свой <head> в html шаблоне, и тем самым заработала проверка на лету, нужны всё-таки сообщения error по отдельности для каждого поля, у которого вы проверяете ошибки ajax'ом.


almix
Разработчик Loco, автор статей по веб-разработке на Yii, CodeIgniter, MODx и прочих инструментах. Создатель Team Sense.

Вы можете почитать все статьи от almix'а.



Другие статьи по этой теме:

Комментарии (1)     Подпишитесь на RSS комментариев к этой статье.

1 комментарий

#442
Роман говорит:
April 25, 2012 at 03:39 pm
Ребят, не ругайтесь, помогите.
у меня куча моделей в форме, некоторые поля создаются динамически, например есть модель Video. для нее я создаю поля
КОД: ВЫДЕЛИТЬ ВСЁ
function addFieldVideo()
{
    $its = count++;
    $('<lable>Название видео</lable><input type="text" class="field" name="Video[' + $its + '][name]" /><div class="errorMessage" id="Video_name_em_" style="display:none"></div><br /><lable>Код вставки</lable><textarea name="Video[' + $its + '][link]" id="" cols="30" rows="10"></textarea><div class="errorMessage" id="Video_link_em_" style="display:none"></div><br />').fadeIn('slow').appendTo('#video_conteiner');

}


поля создаются нормально, но как их валидировать???


если я правильно понял, то валидация не срабатывает, потому что скрипт ajax валидации генерируется во время загрузки формы. а при добавлении новых полей функции обработки нету для них. как быть в таком случае?