Валидация Полей Формы В Случае Tabular Input

Имеются 2 таблицы - bid_type(id,name,status,b_deleted) и bid_fields(id,idzt,idft,name,required), а также 1 модель BidType для первой таблицы. В модели (BidType.php) объявляю 4 дополнительных свойства и для них прописываю правила:


class BidType extends CActiveRecord

{

	public $field_name;

	public $field_type;

	public $field_required;

	public $field_default;	


	public function rules()

	{

		return array(

			array('name', 'length', 'max'=>255),

			array('name,field_name', 'required'),

			array('status', 'numerical', 'integerOnly' => true),

			array('id, name, status, b_deleted, field_name', 'safe', 'on'=>'search'),

		);

	}

В форме нужно несколько раз вывести элементы ввода для этих искусственно объявленных 4 свойств, чтобы потом при сохранении формы перехватить их и сохранить в другую таблицу. Согласно http://www.yiiframework.com/doc/guide/1.1/ru/form.table делаю так:


<div class="form">


<?php $form=$this->beginWidget('CActiveForm', array(

	'id'=>'bid-type-form',

	'enableAjaxValidation'=>true,

	'clientOptions'=>array(

                'validateOnChange'=>true,  

                'validateOnType'=>true,    

                'validationDelay'=>0,     

        ),

)); ?>

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


	<div class="row">

		<?php echo $form->labelEx($model,'name'); ?>

		<?php echo $form->textField($model,'name',array('size'=>40,'maxlength'=>255)); ?>

		<?php echo $form->error($model,'name'); ?>

	</div>

	<div class="row">

		<?php echo $form->labelEx($model,'status'); ?>

		<?php echo $form->dropDownList($model,'status',array('0'=>'создаваемый','1'=>'создание завершено')); ?>

		<?php echo $form->error($model,'status'); ?>

	</div>


	<div class="row buttons">

		<?php echo CHtml::submitButton($model->isNewRecord ? 'Создать' : 'Сохранить изменения'); ?>

	</div>


<br>

<?php for($i=0;$i<2;$i++) { ?>


	<div class="row">

		<?php echo $form->labelEx($model,"[$i]field_name"); ?>

		<?php echo $form->textField($model,"[$i]field_name",array('size'=>40,'maxlength'=>255)); ?>

		<?php echo $form->error($model,"[$i]field_name"); ?>

	</div>			

	<div class="row">

		<?php echo $form->labelEx($model,"[$i]field_type"); ?>

		<?php echo $form->dropDownList($model,"[$i]field_type",$list); ?>

		<?php echo $form->error($model,"[$i]field_type"); ?>

	</div>     

	<div class="row">

		<?php echo $form->labelEx($model,"[$i]field_default"); ?>

		<?php echo $form->textField($model,"[$i]field_default",array('size'=>40,'maxlength'=>255)); ?>

		<?php echo $form->error($model,"[$i]field_default"); ?>

	</div>    

	<div class="row">

		<?php echo $form->labelEx($model,"[$i]field_required"); ?>

		<?php echo $form->checkBox($model,"[$i]field_required",array('checked'=>'checked')); ?>

		<?php echo $form->error($model,"[$i]field_required"); ?>

	</div> 

<?}?>

<?php $this->endWidget(); ?>


</div><!-- form -->

Валидация полей name и status (полей таблицы bid_type) работает нормально. Но не могу понять, почему валидация дополнительных полей работает неправильно:

  1. на странице bidtype/create для поля field_name валидация успешна даже в случае противоречия любым описанным в rules правилам - сейчас там только required (и светится зеленым соответствующее поле ввода)

  2. на странице bidtype/update/4 для поля field_name валидация не вызывается вообще (и поле не подсвечивается).

Оба пункта касаются Ajax-валидации, при отправке формы общий список ошибок и замечания к каждому не прошедшему валидацию полю выдаются верно

Заранее спасибо всем отозвавшимся.

http://www.yiiframework.com/doc/api/1.1/CActiveForm

Т.е. для такой формы стандартная ajax валидация не предусмотрена.

А что возвращает ajax валидация?

По идее эти поля валидируются, но визуально вы этого не видите, потому что name для поля


<?php echo $form->textField($model,"[$i]field_name",array('size'=>40,'maxlength'=>255)); ?>

отличается от того, что указан тут


array('name,field_name', 'required'),

Попробуйте ради интереса доп поле назвать точно также как оно генерируется в форме.

Спасибо большое, а то я, полагаясь на http://www.yiiframework.com/doc/guide/1.1/ru/form.table и его заключительную фразу

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