Ultimamente hay pocas y no muy interesantes noticias en el mundo linux asi que aprovecho para postear otro ejemplo mas de lo que voy aprendiendo con KumbiaPHP framework. Esta vez lo que les voy a mostrar es un ejemplo de listas enlazadas usando jquery. El ejemplo mas completo (pero mas largo) esta en la wiki de kumbiaphp, a mi no me gusta que sea largo sino lo mas simple posible por eso lo voy a acortar un poquito.
Primero deben saber de que se tratan las listas enlazadas o en cascada, son esos combobox o selects en los que uno al seleccionar una categoria se cargan las subcategorias en otro combobox. En PHP seria sumamente facil hacerlo, el chiste es lograr hacerlo sin recargar la pagina ya que sino seria incomodo para los usuarios.
El ejemplo final quedara algo asi:
Al seleccionar una categoria inmediatamente semostraran las subcategorias en la lista de al lado recojiendo la informacion desde la base de datos.Esta va a ser nuestra base de datos de ejemplo:
Vamos a tener un controlador llamado categorias_controller.php con las acciones index y mostrarSubCat con sus correspondientes vistas y vamos a hacer uso de un partial (cascada.phtml) para facilitarnos la vida.
Primero vamos a ver que en la accion index.phtml tenemos lo siguiente:
Seleccione una categoria:<br/> <? echo select_tag(array( 'categorias.id', 'Categorias', 'option'=>'nombre', 'size'=>7 )) ?> <?View::partial('cascada')?> <div id='div_subcategorias'></div>
<script type="text/javascript"> $("#categorias_id").change(function(){ var categorias_id=$('#categorias_id').val(); url="<?php echo PUBLIC_PATH.'admin/mostrarSubCat/'; ?>" + categorias_id; $("#div_subcategorias").load(url); }); </script>
public function mostrarSubCat($categorias_id=0){ // es para no enviar el template $this->set_response('view'); //para tenerlo disponible en la vista $this->categorias_id = $categorias_id; }
Seleccione una subcategoria:<br/> <?php echo select_tag(array("subcategorias.id", 'order' => 'nombre', 'Subcategorias', 'option'=> 'nombre', 'conditions'=> "categorias_id = $categorias_id", 'size'=>7));
oye Perro! de verdad me encantan tus tutos… y me encantarían más si fueran siempre en Beta 2 jeje… gracias!!!!
hace mucho que no programo nada pero pronto tendre que volver a hacerlo y seguramente sera todo en beta2 :)
Hola gran tutorial!!! Tengo una pregunta, resulta utilizo este método para el caso de la localidad. Antes de implementar listas enlazadas, el formulario se guardaba en la BD correctamente, pero cuando implemente esta mejora, ya no guardo mas. Esto se debe a que el select_tag que maneja las ciudades no se carga en la vista del formulario sino que se muestra ahí mediante ajax, como lo indicas en tu tuto. Mi pregunta es la siguiente, sabes cómo obtener id de la ciudad, teniendo en cuenta que el select_tag de ciudad se llena en otra vista y se muestra en el… Leer mas »