Loading



 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Combobox Dinámico con Regiones -> Ciudades -> Pueblos
13-07-2012, 08:03 AM
Mensaje: #1
Combobox Dinámico con Regiones -> Ciudades -> Pueblos

Hola a todos,
llevo muy poco tiempo con yii, y me estoy preguntando cual seria la forma mas fácil de hacer un Combobox Dinámico con Regiones -> Ciudades -> Pueblos con yii?
Como ejemplo tendrá 3 tablas en la base de datos ( Regiones, Ciudades, Pueblos )
y tendrían 3 campos.
ej: tablas
regiones: id, nombre
ciudades: id, nombre, regionid
pueblos: id, nombre, ciudadesid


Que yii en la vista al seleccionar la región que me cargue en la lista las ciudades que pertenecen a esta región y al seleccionar la ciudad que me cargue los pueblos de esta ciudad en la lista pueblos.


Lógicamente todo debe realizarse sin actualizar la pagina Sonrisa normalmente programo todo en php puro y para estas cosas uso ajax o jquery pero me gustaría ver un ejemplo de como se podría hacer esto en yiiframework.


Estoy pensando en usar yii en mi próximo proyecto pero necesito ver algunas cosillas aun Sonrisa

QUOTE
13-07-2012, 08:12 AM
Mensaje: #2
RE: Combobox Dinámico con Regiones -> Ciudades -> Pueblos

Hola RTJ, fijate la info en este sitio a ver si te sirve.


http://www.sistemasycontroles.net/foro2/...q0rbjdk184


saludos!!

QUOTE
13-07-2012, 12:00 PM (Este mensaje fue modificado por última vez en: 13-07-2012 12:22 PM por Byte66.)
Mensaje: #3
RE: Combobox Dinámico con Regiones -> Ciudades -> Pueblos

Hola yo lo hice de esta forma, y funciona tanto para crear y actualizar.


Controller:

Código PHP:
public function actionCargarMunicipios() {
        
$data Municipio::model()->findAll('id_estado=:id_estado', array(':id_estado' => (int) $_POST['id_estado']));
        
$data CHtml::listData($data'id''descripcion');
        
$municipios "<option value=''>--Seleccione el Municipio--</option>";
        foreach (
$data as $value => $name) {
            
$municipios .= CHtml::tag('option', array('value' => $value), CHtml::encode($name), true);
        }
        
$parroquias "<option value=''>--Seleccione la Parroquia--</option>";

        echo 
CJSON::encode(array(
            
'municipios' => $municipios,
            
'parroquias' => $parroquias
        
));
    }

    public function 
actionCargarParroquias() {
        
$data Parroquia::model()->findAll('id_municipio=:id_municipio', array(':id_municipio' => (int) $_POST['id_municipio']));
        
$data CHtml::listData($data'id''descripcion');
        echo 
"<option value=''>--Seleccione la Parroquia--</option>";
        foreach (
$data as $value => $name) {
            echo 
CHtml::tag('option', array('value' => $value), CHtml::encode($name), true);
        }
    } 


View:

Código PHP:
<?php
                $estado 
= new CDbCriteria;
                
$estado->order 'descripcion ASC';
        
//Estado
        
echo $form->labelEx($model'id_estado');
        echo 
$form->dropDownList(
                
$model'id_estado'CHtml::listData(Estado::model()->findAll($estado), 'id''descripcion'), array(
                
'prompt' => '--Seleccione el Estado--',
                
'class' => 'shadow_select',
                
'ajax' => array(
                        
'type' => 'POST',
                        
'url' => CController::createUrl('Contratista/cargarMunicipios/'),
                        
'update' => '#Contratista_id_municipio',
                        
'dataType' => 'json',
                        
'data' => array('id_estado' => 'js:this.value'),
                        
'success' => 'function(data) {
                            $("#Contratista_id_municipio").html(data.municipios);
                            $("#Contratista_id_parroquia").html(data.parroquias);
                        }'
,
                )));
        echo 
$form->error($model'id_estado');

        
//Municipio
        
if ($model->isNewRecord) {
            
$municipios $form->dropDownList($model'id_municipio', array(), array(
                    
'prompt' => '--Seleccione el Municipio--',
                    
'class' => 'shadow_select',
                    
'ajax' => array(
                            
'type' => 'POST',
                            
'url' => CController::createUrl('Contratista/cargarParroquias'),
                            
'update' => '#Contratista_id_parroquia',
                            
'data' => array('id_municipio' => 'js:this.value'),
                    )));
        } else {
            
$municipios $form->dropDownList($model'id_municipio'CHtml::listData(Municipio::model()->findAllBySql("select * from tbl_municipio where id_estado = :id_estado", array(':id_estado' => $model->id_estado)), 'id''descripcion'), array(
                    
'ajax' => array(
                            
'type' => 'POST',
                            
'url' => CController::createUrl('Contratista/cargarParroquias/'),
                            
'update' => '#Contratista_id_parroquia',
                            
'data' => array('id_municipio' => 'js:this.value'),
                    )));
        }
        
    echo 
$form->labelEx($model'id_municipio');
    echo 
$municipios;
    echo 
$form->error($model'id_municipio');
        
        
//Parroquia
        
if ($model->isNewRecord) {
        
$parroquias $form->dropDownList($model'id_parroquia', array(), array('prompt' => '--Seleccione la Parroquia--'));
    } else {
        
$parroquias $form->dropDownList($model'id_parroquia'CHtml::listData(Parroquia::model()->findAllBySql("select * from tbl_parroquia where id_municipio = :id_municipio", array(':id_municipio' => $model->id_municipio)), 'id''descripcion'));
    }
        
    echo 
$form->labelEx($model'id_parroquia');
    echo 
$parroquias;
    echo 
$form->error($model'id_parroquia');
?>


Recuerda agregar en el accessRules del controlador los métodos CargarMunicipios y CargarParroquias

QUOTE
13-07-2012, 12:39 PM
Mensaje: #4
RE: Combobox Dinámico con Regiones -> Ciudades -> Pueblos

hola todo eso se simplifica extremadamente usando ajax y jquery. aqui tienen un ejemplo muy claro:
http://www.yiiframeworkenespanol.org/for...php?tid=60




QUOTE
13-07-2012, 04:03 PM
Mensaje: #5
RE: Combobox Dinámico con Regiones -> Ciudades -> Pueblos
(13-07-2012 12:39 PM)bluyell escribió:  hola todo eso se simplifica extremadamente usando ajax y jquery. aqui tienen un ejemplo muy claro:
http://www.yiiframeworkenespanol.org/for...php?tid=60

Hola, gracias por tu respuesta, es justo lo que necesitaba.
una forma sencilla y sin complicarme la vida Sonrisa

QUOTE


Posibles temas similares...
Tema: Autor Respuestas: Vistas: Último mensaje
Información Problema con combobox dependiente de una tabla de BD leidy2201 2 916 23-04-2014 12:35 PM
Último mensaje: leidy2201
  como hacer un progress bar dinámico. gabrieled209 0 871 20-02-2014 09:27 PM
Último mensaje: gabrieled209
  Combobox Dependientes con accion en ajax elsr.doo 1 1,627 18-01-2013 10:55 AM
Último mensaje: stilomio

Salto de foro:


Usuario(s) navegando en este tema: 1 invitado(s)

Contáctanos | Yii Framework en Español | Volver arriba | Volver al contenido | Archivo (Modo simple) | Sindicación RSS