Validar arreglo de modelos con performAjaxValidation()

Hola a todos.

Tengo la relación inmueble, detallar_caracteristicas_internas y Caracteristica_Interna, tal cual muestro en la imagen adjunta.

En caracteristica_interna tengo un listado de las caracteristicas como son: dormitorio, patio, sala, etc. Cada uno con una imagen respectiva; en detallar_caracteristica_interna tengo el valor que le corresponde a cada Caracteristica_interna, es decir cada tupla "Detallar_Caracteristica_Interna" contiene "id_inmueble, id_caracteristica_interna, valor_detalle_caracteristica", para que se entienda de lo que hablo les subo otra imagen.

El código que tengo funciona correctamente, lo que no consigo realizar es la validación mediante ajax del campo "valor_detalle_caracteristica". Estuve viendo $this->performAjaxValidation(); el cual supuestamente valida tambien un arreglo de modelos, y es donde no puedo continuar; cabe aclarar que la validacion por post funciona correctamente.

Este es mi controlador en Caracteristica_Interna


public function actionDetallarCaracteristicas(){

            $caracteristicas = CaracteristicaInterna::model()->getCaracteristicasBasicas('Habitacion');

            

            foreach($caracteristicas as $i=>$caracteristica)

                $modelo_detalle_caracteristicas[] = new DetalleCaracteristicasInternas();

           

            $this->performAjaxValidation($modelo_detalle_caracteristicas);//Aqui esta mi problema 

            $this->validarCaracteristicasDetalladas($modelo_detalle_caracteristicas,$caracteristicas);

             

            $this->render('detallarCaracteristicas',array(

                'detalle_caracteristicas'=>$modelo_detalle_caracteristicas,

                'model'=>$model = new CaracteristicaInterna(),

            ));

        }

y detallarCaracteristicas.php


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

        'id' => 'detalle-caracteristicas-internas-form',

	'enableAjaxValidation' => true,

    )); ?>


<?php foreach(CaracteristicaInterna::model()->getCaracteristicasBasicas('Habitacion') as $i=>$item): ?>

    <div class="cont_atributos estilo_contenedores izquierda">

        <div class="izquierda"><?php echo CHtml::image('/images/inmuebles/'.$item->imagen_caracteristica_interna)?></div>

        <div class="cont_atributo_valor">

        <div class="cont_nombre_atributo izquierda">

            <?php echo $form->hiddenField($detalle_caracteristicas[$i],"[$i]id_inmueble",array('value'=>1)) ?>

            <?php echo $form->hiddenField($detalle_caracteristicas[$i],"[$i]id_caracteristica_interna",array('value'=>$item->id_caracteristica_interna)) ?>    

            <?php echo $item->nombre_caracteristica_interna?>

        </div>

        <div class="cont_valor_atributo">

            <?php if($item->tiene_valor_literal == true):?>

            <?php echo $form->textField($detalle_caracteristicas[$i], "[$i]valor_detalle_caracteristica", array('maxlength' => 50,'class'=>'valor_atributo estilo_contenedores'));?>

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

            <?php endif;?>

            <?php if($item->tiene_valor_literal == false):?>

                <div>

                    <div class="check_box">

                        <?php if(!$detalle_caracteristicas[$i]->isNewRecord){?>

                    <?php if($detalle_caracteristicas[$i]->valor_detalle_caracteristica == 'si'){ ?>    

                        <img src="/../images/generales/checked.gif"></img>

                        <?php echo $form->hiddenField($detalle_caracteristicas[$i], "[$i]valor_detalle_caracteristica", array('maxlength' => 50,'value'=>'si'));?>

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

                    <?php }else{ ?>

                        <img src="/../images/generales/checked.gif" class="oculto"></img>

                        <?php echo $form->hiddenField($detalle_caracteristicas[$i], "[$i]valor_detalle_caracteristica", array('maxlength' => 50,'value'=>'no'));?>

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

                    <?php } ?>

                        <?php }else{?>

                            <img src="/../images/generales/checked.gif"></img>

                            <?php echo $form->hiddenField($detalle_caracteristicas[$i], "[$i]valor_detalle_caracteristica", array('maxlength' => 50,'value'=>'si'));?>

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

                        <?php }?>

                    </div>

                </div>

            <?php endif;?>

        </div>

        </div>

    </div>

    <?php endforeach;?>


<?php

    echo GxHtml::submitButton($detalle_caracteristicas[$i]->isNewRecord ? 'Guardar' : 'Modificar',array('class'=>'estilo_botones'));

    $this->endWidget();

?>  



No se que estoy haciendo mal, cualquier comentario es de ayuda, se los agradesco.

Hola! llevo 1 semana con el mismo problema y sin tener idea de como solucionarlo.

La función performAjaxValidation, la tienes que llamar donde hagas el save, es decir donde guardes en la base de datos. podrías poner directamente el código en el mismo actionCreate, o bueno, donde vaya el formulario en cuestión.

Por ahora he desistido, y no he conseguido hacer que funcione, con todas las combinaciones posibles del clientOption, y todas las que se me han ocurrido en el controlador… espero que alguien nos pueda guiar…

Un saludo!!

fue un problema con las librerías js, puse unas propias y no dejaban a yii hacer lo suyo!!! jejejejeje Gracias!!

Bueno logre que "valide" a medias, lo digo así porque al salir de cualquier campo se pinta de verde como hace cuando es success pero no respeta mis reglas de validación, no se si tenga que ver con que estoy validando varios modelos, pero en teoría debería funcionar pues performAjaxValidation() recibe un modelo o un arreglo de modelos a validar; alguien tiene alguna sugerencia? comenten porfa estoy algo estancado en esto.

Por cierto la validación del servidor funciona correctamente, lo único que falla es la validación de ajax.