Yii Framework Forum: Problemas Con Combos Dependiente En Yii 1.1.13 - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Problemas Con Combos Dependiente En Yii 1.1.13 No funcionan los combos dependientes con esta versión de Yii Rate Topic: -----

#1 User is offline   superleche 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 3
  • Joined: 16-March 12

Posted 26 August 2013 - 04:14 PM

Estimados,

Estaba trabajando con combos dependientes basado en ejemplos que encontré.
Funcionan muy bien en la versión 1.1.8
El problema es que al hacer exactamente lo mismo, en la versión 1.1.13, ya no funciona.

Lo que quiero es que, al escoger una ciudad en el un combo, se presenta en el segundo combo los sectores de la ciudad seleccionada.

En la vista tengo:
	<div class="row">
		<?php echo $form->labelEx($model,'localidad_ciudad_id'); ?>
		<?php echo $form->dropDownList($model, 'localidad_ciudad_id',Localidad::items('superior'),
			array('title'=>'Selecciona el país / ciudad en la que se encuentra tu local.',
				'ajax' => array(
					'type' => 'POST',
					'url' => CController::createUrl('local/sectordinamico'),
					'update' => '#sector_dinamic',
							)
				)
			); ?>
	</div>

	<div class="row">
		<?php echo $form->labelEx($model,'localidad_sector_id'); ?>
		<div id="sector_dinamic">
			<?php echo $form->dropDownList($model,'localidad_sector_id', array('Primero seleccione un País / Ciudad')); ?>
		</div>
		<?php echo $form->error($model,'localidad_sector_id'); ?>
	</div>


Lo que noté es que usando Yii 1.1.8 el código java que me genera es:
<script type="text/javascript">
 $(document).ready(function(){
    $('#Local_localidad_ciudad_id').change(function(){jQuery.ajax({'type':'POST','url':'/mantenmealtanto/index.php?r=local/sectordinamico','cache':false,'data':jQuery(this).parents("form").serialize(),'success':function(html){jQuery("#sector_dinamic").html(html)}});return false;});
        })
</script>


mientras que si utilizo Yii 1.1.13 el código java que me genera es:
<script type="text/javascript">
/*<![CDATA[*/
jQuery(function($) {
jQuery('body').on('change','#Local_localidad_ciudad_id',function(){jQuery.ajax({'type':'POST','url':'/mantenmealtanto/index.php?r=local/sectordinamico','cache':false,'data':jQuery(this).parents("form").serialize(),'success':function(html){jQuery("#sector_dinamic").html(html)}});return false;});
});
/*]]>*/
</script>


La vista, los modelos, los controladores son exactamente los mismos.
El problema es que con la versión 1.1.8 funciona perfectamente, pero con la 1.1.13 no.

Alguien sabe si hay algún bug o que se debe hacer diferente para que funcione? Gracias por su ayuda, comentarios e ideas
0

#2 User is offline   robregonm 

  • Experienced Yii Developer
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 601
  • Joined: 30-July 09
  • Location:Colombia

Posted 27 August 2013 - 11:27 PM

Hola, los dos códigos generados son perfectamente equivalentes...
Lo que sí se me ocurre es un problema con assets...
Mejor dicho, pruebe limpiando el directorio "assets" y pruebe nuevamente a ver cómo va :)

Saludos.
Ricardo Obregón
LinkedIn Profile
YiiFramework en Español - http://yiiframework.co/ - Yii Code Generator for Bootstrap
http://obregon.co/ - https://1server.co/
PHP 5.5+, nginx, MySQL, PostgreSQL, Yii 1.x & 2.x, CanJS and more.
Follow me: @robregonm & @obregonco & @1ServerCo.
0

#3 User is offline   superleche 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 3
  • Joined: 16-March 12

Posted 06 September 2013 - 11:36 AM

View Postrobregonm, on 27 August 2013 - 11:27 PM, said:

Hola, los dos códigos generados son perfectamente equivalentes...
Lo que sí se me ocurre es un problema con assets...
Mejor dicho, pruebe limpiando el directorio "assets" y pruebe nuevamente a ver cómo va :)

Saludos.


Gracias por la idea, pero tampoco funcionó. Incluso instalé el Yii 1.1.13 en otra máquina totalmente diferente y nada. El problema se mantiene. Lo raro es que, haciendo que el combo no genere automáticamente el script java y copiando el script de la versión 1.1.8 si funciona. Por ahora, creo que tocará de esta manera.

De todas maneras, gracias, y si alguien tiene alguna otra idea o sugerencia, bienvenida
0

#4 User is offline   lagogz 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 478
  • Joined: 30-November 12
  • Location:Galiza

Posted 25 September 2013 - 01:17 AM

Buenos días.

Yo no lo hago así y me funciona en todas las versiones de Yii.

Lo que hago es lo siguiente:

Combo 1
<div class="row">
            <?php 
                echo $form->labelEx($model,'id1'); 
                echo $form->dropDownList($model, 'id1', CHtml::listData(
                                        Model1::model()->findAll(
                                        array('order'=>'name1 ASC')), 'id1', 'name1'),
                                        array('prompt' => 'Seleccione Name1', 'id'=>'combo1')); 
                echo $form->error($model,'id1'); 
            ?>
        </div>


Combo 2
echo $form->dropDownList(
                        $model,
                        'id2',
                        array(),
                        array('id'=>'combo2')
                        );


AJAX en la vista:
<script>
    $('#combo1').change(function(){
        var selOpt= $(this);               
        var selID= selOpt.val();     
        
        var action = 'index.php?r=controller/actionRefresh&id1=' + selID;
        
        $.getJSON(action, function(listaJson) 
        {
            $('#combo2').find('option').each(function(){ $(this).remove(); });
            
            if(listaJson.length>0)
            {
                $('#combo2').append("<option value='0'>Select Element</option>");
                
                $.each(listaJson, function(key, listElement)       
                {
                    $('#combo2').append("<option value='" + listElement.id2 + "'>" + listElement.name2 + "</option>");
                });
            }
            else
                $('#combo2').append("<option value='0'>There aren't elements for this id1</option>");
        
        }).error(function(e){ 'your error code' });
    });
</script>


Donde "actionRefresh" está en el controlador:
public function actionRefresh($id1)
    {
        $resp = Model2::model()->findAllByAttributes(
                                                        array('id1'=>$id1),
                                                        array('order'=>'name2 ASC')
                                                        );
        header("Content-type: application/json");                   
        echo CJSON::encode($resp);       
    }


No olvides añadir "actionRefresh" en las rules del controlador para poder utilizarlo.

...espero que no se me haya olvidado nada... :unsure:

Saludos.
-----------------------------------------------------------------------------------------------
------------------------------- VISITEN FOCUCHASART --------------------------------
-----------------------------------------------------------------------------------------------
0

#5 User is offline   superleche 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 3
  • Joined: 16-March 12

Posted 25 September 2013 - 02:19 PM

View Postlagogz, on 25 September 2013 - 01:17 AM, said:

Buenos días.

Yo no lo hago así y me funciona en todas las versiones de Yii.

Lo que hago es lo siguiente:

...
...
...

...espero que no se me haya olvidado nada... :unsure:

Saludos.


Gracias. Actualmente estoy haciendo algo parecido.
Lo que pasa es que con el código que indiqué, todo el código AJAX necesario en la vista se generaba solo. Solo tenía que programar el controlador para refrescar con los datos relacionados.

Quería ahorrarme la parte de AJAX. :P
0

#6 User is offline   lagogz 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 478
  • Joined: 30-November 12
  • Location:Galiza

Posted 26 September 2013 - 02:00 AM

Bueno, ya sabes q a veces es mejor hacer las cosas "manualmente". ;)

Saludos.
-----------------------------------------------------------------------------------------------
------------------------------- VISITEN FOCUCHASART --------------------------------
-----------------------------------------------------------------------------------------------
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users