Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => PHP => Mensaje iniciado por: Graphixx en 19 Mayo 2011, 17:45 PM

Título: [SOLUCIONADO] Dependent DropdownList con Yii framework
Publicado por: Graphixx en 19 Mayo 2011, 17:45 PM
Hola compañeros ya que es medio complicado implementar combos dependientes en el framework. les comparto el codigo trabajando.

Lo estoy implementando:
***********************

Modelo: CombosDependientes
Controlador: CombosDependientes
Vista: _form.php

Haciendo uso de los modelos:
****************************

Departamento:
codDepartamento
strDepartamento

Municipio:
codMunicipio
strMunicipio
codDepartamento

Corregimiento:
codCorregimiento
strCorregimiento
codMunicipio
codDepartamento

En el controlador:
Código (php) [Seleccionar]

<?php
// Funcion para llenar combobox dependiente de lo que seleccione el usuario en Departamento/Municipio/Corregimiento

public function actionDynamicMunicipios()
    {
        
$data Municipio::model()->findAll('codDepartamento=:parent_id',
                        array(
':parent_id'=>(int) $_POST['CombosDependientes']['codDepartamento']));
 
 
        
$data CHtml::listData($data,'codMunicipio','strMunicipio');
echo CHtml::tag('option',array('value' => ''),'Seleccione un municipio...',true);
            foreach(
$data as $id => $value)
            {
                echo 
CHtml::tag('option',array('value' => $id),CHtml::encode($value),true);
            }
 
    }
 
    public function 
actionDynamicCorregimientos()
    {
        
$data Corregimiento::model()->findAll('codMunicipio=:parent_id',
                        array(
':parent_id'=>(int) $_POST['CombosDependientes']['codMunicipio']));
 
        
$data CHtml::listData($data,'codCorregimiento','strCorregimiento');
echo CHtml::tag('option',array('value' => ''),'Seleccione un corregimiento...',true);
            foreach(
$data as $id => $value)
            {
                echo 
CHtml::tag('option',array('value' => $id),CHtml::encode($value),true);
            }
    }
?>



En la vista:
Código (php) [Seleccionar]

<!-- INICIO COMBOS DEPENDIENTES -->
<div class="row">
       <?php echo $form->labelEx($model,'Departamento'); ?>
       <?php 
              $departamento 
= new CDbCriteria
              
$departamento->order 'strDepartamento ASC';
        
?>

       <?php 
              
echo $form->dropDownList($model,'codDepartamento',CHtml::listData(Departamento::model()->findAll($departamento),'codDepartamento','strDepartamento'),
                        array(
                            
'ajax' => array(
                            
'type' => 'POST',
                            
'url' => CController::createUrl('CombosDependientes/dynamicMunicipios'),
                            
'update' => '#CombosDependientes_codMunicipio'
                        
),'prompt' => 'Seleccione un Departamento...'
                  
)
              );
        
?>

       <?php echo $form->error($model,'codDepartamento'); ?>
   </div>

   <div class="row">
       <?php echo $form->labelEx($model,'Municipio'); ?>
       <?php 
              $municipio 
= new CDbCriteria;
              
$municipio->order 'strMunicipio ASC';
        
?>

       <?php 
              
echo $form->dropDownList($model,'codMunicipio',CHtml::listData(Municipio::model()->findAll($municipio),'codMunicipio','strMunicipio'),
                        array(
                            
'ajax' => array(
                            
'type' => 'POST',
                            
'url' => CController::createUrl('CombosDependientes/dynamicCorregimientos'),
                            
'update' => '#CombosDependientes_codCorregimiento'
                        
),'prompt' => 'Seleccione un Municipio...'
                    
)
              );
        
?>

       <?php echo $form->error($model,'codMunicipio'); ?>
   </div>


   <div class="row">

       <?php echo $form->labelEx($model,'Corregimiento'); ?>
       <?php echo $form->dropDownList($model,'codCorregimiento',array('Seleccione un Corregimiento...'));?>
       <?php echo $form->error($model,'codCorregimiento'); ?>
   </div>
<!-- FIN COMBOS DEPENDIENTES -->


El codigo trabaja perfecto :D
Título: Re: [DUDA] Dependent DropdownList con Yii framework
Publicado por: Nakp en 22 Mayo 2011, 20:03 PM
pues... no discutire la forma en que trabajas con Yii, no lo he usado a fondo pero.. por que llamas al modelo en una vista? x_X

supongo que lo estas haciendo en base a este tutorial :xD

http://www.yiiframework.com/wiki/24/creating-a-dependent-dropdown/

no veo nada distinto mas que el replace :P  perdona que no lo compruebe yo mismo pero me gustan mas otros frameworks xD
Título: Re: [SOLUCIONADO] Dependent DropdownList con Yii framework
Publicado por: Graphixx en 24 Mayo 2011, 23:17 PM
ya lo solucione yo solo  ::) A proposito compa, en que desarrollas, Kumbia, Cake, Zend ???....
Título: Re: [SOLUCIONADO] Dependent DropdownList con Yii framework
Publicado por: Nakp en 25 Mayo 2011, 01:33 AM
codeigniter, fuel, doophp, a veces zend :) +jquery hardcoded xD
Título: Re: [SOLUCIONADO] Dependent DropdownList con Yii framework
Publicado por: pabloramirez77 en 1 Abril 2012, 22:43 PM
Hola amigo, estoy probando tu codigo pero el mismo no me funciona, te anexo mi codigo a ver si me puedes ayudar.

Lo estoy implementando:
***********************
Modelo: Institucion
Controlador: InstitucionController
Vista: _form.php

_form.php
<?php
// Funcion para llenar combobox dependiente de lo que seleccione el usuario en Estado/Municipio/Parroquia   
   <!-- INICIO COMBOS DEPENDIENTES -->
   
   <div class="row">
       <?php echo $form->labelEx($model,'Estado'); ?>
       <?php
             $estado = new CDbCriteria;
             $estado->order = 'nombre_estado ASC';
       ?>
       <?php
             echo $form->dropDownList($model,'id_estado',CHtml::listData(estado::model()->findAll($estado),'id_estado', 'nombre_estado'),
                       array(
                           'ajax' => array(
                           'type' => 'POST',
                           'url' => CController::createUrl('InstitucionController/actionDynamicMunicipios'),
                           'update' => '#InstitucionController_id_municipio'
                       )   ,'prompt' => 'Seleccione un estado..'    
                 )
             );
       ?>
       <?php echo $form->error($model,'id_estado'); ?>
   </div>
   
   <div class="row">
       <?php echo $form->labelEx($model,'Municipio'); ?>
       <?php
             $municipio = new CDbCriteria;
             $municipio->order = 'Nombre_Municipio ASC';
       ?>
       <?php
             echo $form->dropDownList($model,'id_municipio',CHtml::listData(municipio::model()->findAll($municipio),'id_municipio','nombre_municipio'),
                       array(
                           'ajax' => array(
                           'type' => 'POST',
                           'url' => CController::createUrl('CombosDependientes/dynamicCorregimientos'),
                           'update' => '#InstitucionController_id_parroquia'
                       ),'prompt' => 'Seleccione un Municipio...'
                   )
             );
       ?>
       <?php echo $form->error($model,'codMunicipio'); ?>
   </div>
   
   <div class="row">

       <?php echo $form->labelEx($model,'Corregimiento'); ?>
       <?php echo $form->dropDownList($model,'id_parroquia',array('Seleccione un Corregimiento...'));?>
       <?php echo $form->error($model,'id_parroquia'); ?>
   </div>
   
   <!-- FIN COMBOS DEPENDIENTES -->


?>

InstitucionController.php
public function actionDynamicMunicipios()
   {
       $data = Municipio::model()->findAll('codDepartamento=:parent_id',
                       array(':parent_id'=>(int) $_POST['Institucion']['id_estado']));


       $data = CHtml::listData($data,'id_Municipio','nombre_Municipio');
      echo CHtml::tag('option',array('value' => ''),'Seleccione un municipio...',true);
           foreach($data as $id => $value)
           {
               echo CHtml::tag('option',array('value' => $id),CHtml::encode($value),true);
           }

   }

   public function actionDynamicCorregimientos()
   {
       $data = Corregimiento::model()->findAll('codMunicipio=:parent_id',
                       array(':parent_id'=>(int) $_POST['Institucion']['id_municipio']));

       $data = CHtml::listData($data,'id_parroquia','nombre_parroquia');
      echo CHtml::tag('option',array('value' => ''),'Seleccione un corregimiento...',true);
           foreach($data as $id => $value)
           {
               echo CHtml::tag('option',array('value' => $id),CHtml::encode($value),true);
           }
   }
Título: Re: [SOLUCIONADO] Dependent DropdownList con Yii framework
Publicado por: pabloramirez77 en 2 Abril 2012, 00:19 AM
Gracias buen amigo ya encontre la solucion.. un abrazo
Título: Re: [SOLUCIONADO] Dependent DropdownList con Yii framework
Publicado por: tamayo461 en 7 Junio 2012, 05:23 AM
Hola, alguien me podria ayudar con yii dramework?
Título: Re: [SOLUCIONADO] Dependent DropdownList con Yii framework
Publicado por: Graphixx en 7 Junio 2012, 21:05 PM
Cita de: tamayo461 en  7 Junio 2012, 05:23 AM
Hola, alguien me podria ayudar con yii dramework?

Yo puse dos manuales en el foro para que comiences.
http://foro.elhacker.net/php/manual_01_para_aprender_yii_framework_conceptos_basicos_e_instalacion-t342572.0.html