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

te propongo algo

en el archivo CityController.php o como se llame el controlador :P




public function actionListCities()

{

	$criteria = new CDbCriteria();

	$criteria->addSearchCondition('regionid', $_GET['regionid'], true);

	$cities = City::model()->findAll($criteria);

	$rows = array();

	foreach($cities as $city)

	{

		$rows[] = array('city'=>$city->attributes);

	}

	header('Content-type: application/json; charset = utf-8');

	$json = CJSON::encode(array('cities'=>$rows));

	echo $json;

}



con ajax haces una peticion a ‘http://tudominio.com/City/listCities?regionid=id’ (o como sea que tenas tus urls, la cosa es acceder a la nueva función que creaste) y si la respuesta es exitosa entonces tratas los datos como le haces normalmente con JavaScript.

Hola,

A mi me interesaría ver la forma correcta de hacerlo con yii.

Ya que estoy aprendiendo varios frameworks al mismo tiempo, de momento yii va ganando por poco sobre fuelPHP ( fuelphp me parece muy bueno pero un poco verde aun) pero en este caso en concreto de momento va ganando cakephp ya que se puede hacerlo fácilmente con los helpers de cakephp.

Y por esto me gustaría ver la forma correcta de hacerlo con yii. Y asi aclararme algunas dudas :)

De todas formas gracias por tu respuesta.

saludos.

pues en el foro yiiframeworkenespanol.org hicieron otra propuesta a tu pregunta que me parece mas adecuada para lo que buscas, espero sea de ayuda

Gracias a todos por vuestras respuestas.

Ya lo tengo todo claro :) en octubre tengo que desarollar un proyecto bastante grande y seguramente usare yii

Hola JCS, yo necesito tambien los dropDownList dependientes, me he estado guiando por este ejemplo http://www.yiiframework.com/wiki/24/creating-a-dependent-dropdown, pero no me ha funcionado, he probado lo que has dicho y tu funcion si me arroja resultados :) , podrias por favor poner el codigo que utilizas en la vista.

Gracias!!!

RTJ Yii es un framework muy bueno, la verdad lo he usado en varios proyectos grandes y estoy bastante satisfecho, ahora estoy haciendo un par de pruebas con otros frameworks (Cake, Fuel y Kohana) y pues me sigue gustando mas Yii, creo que me voy a dedicar en forma a estudiar este framework porque aunq lo he usado mucho aun hay momentos en los que lo sub-utilizo.

Nicodema, pues ese fue un ejemplo que se me ocurrió para RTJ que dice que esta acostumbrado a usar php puro y JavaScript, acá te pongo un ejemplo de como hacerlo por este metodo, pero igual te recomiendo visitar el link que pongo al final del post, no los he probado personalmente pero es bueno tener conocimiento de varias soluciones a un mismo problema a ver cual se adapta mejor a nuestras necesidades

creo que va asi, no lo he probado y lo saque en un momento ais que puede tener errores




<select id="regionSelect">

	<option value="">Seleccione una regi&oacute;n</option>

	<option value="1">Regi&oacute;n 1</option>

	<option value="2">Regi&oacute;n 2</option>

	<option value="3">Regi&oacute;n 3</option>

</select>

<select id="citySelect" />


<script type="text/javascript">

	function setCities(id) {

		$.getJSON('/city/listCities', {id: id}, function(data) {

			$.each(data.cities, function(i, ciudad) {

				var option = new Option(ciudad.city.name, ciudad.city.id);

				$('#citySelect').append(option);

			});

		});

	}

	

	$("#regionSelect").change(function() {

		var city_id = $(this).val();

		$('#citySelect').empty();

		setCities(city_id);

	});

</script>



http://www.yiiframeworkenespanol.org/foro/showthread.php?tid=63

al final la forma mas facil de hacerlo me parecio esta:

http://www.yiiframeworkenespanol.org/foro/showthread.php?tid=60

Aqui Explico como hacerlo