Foro de elhacker.net

Programación => 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
  1. <?php
  2. // Funcion para llenar combobox dependiente de lo que seleccione el usuario en Departamento/Municipio/Corregimiento
  3.  
  4. public function actionDynamicMunicipios()
  5.    {
  6.        $data = Municipio::model()->findAll('codDepartamento=:parent_id',
  7.                        array(':parent_id'=>(int) $_POST['CombosDependientes']['codDepartamento']));
  8.  
  9.  
  10.        $data = CHtml::listData($data,'codMunicipio','strMunicipio');
  11. echo CHtml::tag('option',array('value' => ''),'Seleccione un municipio...',true);
  12.            foreach($data as $id => $value)
  13.            {
  14.                echo CHtml::tag('option',array('value' => $id),CHtml::encode($value),true);
  15.            }
  16.  
  17.    }
  18.  
  19.    public function actionDynamicCorregimientos()
  20.    {
  21.        $data = Corregimiento::model()->findAll('codMunicipio=:parent_id',
  22.                        array(':parent_id'=>(int) $_POST['CombosDependientes']['codMunicipio']));
  23.  
  24.        $data = CHtml::listData($data,'codCorregimiento','strCorregimiento');
  25. echo CHtml::tag('option',array('value' => ''),'Seleccione un corregimiento...',true);
  26.            foreach($data as $id => $value)
  27.            {
  28.                echo CHtml::tag('option',array('value' => $id),CHtml::encode($value),true);
  29.            }
  30.    }
  31. ?>
  32.  

En la vista:
Código
  1. <!-- INICIO COMBOS DEPENDIENTES -->
  2. <div class="row">
  3.        <?php echo $form->labelEx($model,'Departamento'); ?>
  4.        <?php
  5.              $departamento = new CDbCriteria;
  6.              $departamento->order = 'strDepartamento ASC';
  7.        ?>
  8.        <?php
  9.              echo $form->dropDownList($model,'codDepartamento',CHtml::listData(Departamento::model()->findAll($departamento),'codDepartamento','strDepartamento'),
  10.                        array(
  11.                            'ajax' => array(
  12.                            'type' => 'POST',
  13.                            'url' => CController::createUrl('CombosDependientes/dynamicMunicipios'),
  14.                            'update' => '#CombosDependientes_codMunicipio'
  15.                        ),'prompt' => 'Seleccione un Departamento...'
  16.                  )
  17.              );
  18.        ?>
  19.        <?php echo $form->error($model,'codDepartamento'); ?>
  20.    </div>
  21.  
  22.    <div class="row">
  23.        <?php echo $form->labelEx($model,'Municipio'); ?>
  24.        <?php
  25.              $municipio = new CDbCriteria;
  26.              $municipio->order = 'strMunicipio ASC';
  27.        ?>
  28.        <?php
  29.              echo $form->dropDownList($model,'codMunicipio',CHtml::listData(Municipio::model()->findAll($municipio),'codMunicipio','strMunicipio'),
  30.                        array(
  31.                            'ajax' => array(
  32.                            'type' => 'POST',
  33.                            'url' => CController::createUrl('CombosDependientes/dynamicCorregimientos'),
  34.                            'update' => '#CombosDependientes_codCorregimiento'
  35.                        ),'prompt' => 'Seleccione un Municipio...'
  36.                    )
  37.              );
  38.        ?>
  39.        <?php echo $form->error($model,'codMunicipio'); ?>
  40.    </div>
  41.  
  42.  
  43.    <div class="row">
  44.  
  45.        <?php echo $form->labelEx($model,'Corregimiento'); ?>
  46.        <?php echo $form->dropDownList($model,'codCorregimiento',array('Seleccione un Corregimiento...'));?>
  47.        <?php echo $form->error($model,'codCorregimiento'); ?>
  48.    </div>
  49. <!-- FIN COMBOS DEPENDIENTES -->
  50.  

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
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