Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

como hacer combo en cakephp??

Estas en el tema de como hacer combo en cakephp?? en el foro de Frameworks y PHP orientado a objetos en Foros del Web. que tal, tengo problemas con definir un combo dependiente en cakephp; el problema quizas sea que todo es de una misma tabla, es decir, primero ...
  #1 (permalink)  
Antiguo 16/08/2013, 16:49
Avatar de zeuzft  
Fecha de Ingreso: junio-2009
Ubicación: peru
Mensajes: 358
Antigüedad: 14 años, 10 meses
Puntos: 2
Exclamación como hacer combo en cakephp??

que tal, tengo problemas con definir un combo dependiente en cakephp; el problema quizas sea que todo es de una misma tabla, es decir, primero debe de elegir el periodo, una vez filtrado por periodo, debe seleccionar la region, una vez filtrado por periodo y region debe e seleccionar el nombre del rio, y cuando tenga los 3, debe poder hacer click para pasar al siguiente formulario.
este es mi controller clients_controller:
Código PHP:
function riosini(){
        
$this->layout 'main';
        
$module 'Mrios';
        
$this->loadModel('Mrio');
        
        
$mrios3 $this->Mrio->find('all',array('fields' => array('Mrio.periodo'),'group' => array('Mrio.periodo')));
        
$this->set('mrios3'$mrios3 );
        
        
$module = isset($this->params['named']['module'])?$this->params['named']['module']:null;
        if (!
$module$this->redirect('index');
        
        
$periodo $this->Mrio->find('all',array('fields' => array('Mrio.periodo'),'group' => array('Mrio.periodo')));
        
        
$pers $this->Mrio->find('all',array('fields'=>'Mrio.periodo''group'=>array('Mrio.periodo')));
        foreach (
$pers as $peri) {
        
$per[$peri['Mrio']['periodo']]= $peri['Mrio']['periodo'];
        }
        
$this->set('per',$per);
        
        
$this->set('periodo'$periodo);
        
$this->set('per'$per); //periodo en combo
        
$this->set('location'null); //region en combo
        
$this->set('nombre'null); //rio en combo
        
$this->set('module'$module);
    } 
este es mi view riosini.ctp:
Código HTML:
<?php
				echo $form->create('Propiedad',array('action'=>'clients'));
			?>
			<table class="selectortable">
				<tr>
					<td>
						Periodo
						 <?php
								//pr($per);
						
							echo $form->input('periodo',array('label'=>false,'empty'=>array('0'=>'Selecciona el periodo'),'type'=>'select','onClick'=>'ajax_provincias(this.form)','options'=>$per));

						 ?> 
					</td>
				</tr>
				<tr>
					<td>
						Region
							<div id='comboprovincias'>
								<?php
									echo $form->input('region',array('label'=>false,'empty'=>array('0'=>'Selecciona la region'),'type'=>'select','onClick'=>'ajax_provincias(this.form)','options'=>$location));
								?>
							</div>
					</td>
				</tr><tr>
					<td>
						Rios
					</td>
				</tr>
			</table>
			<?php echo $form->end(); ?>
ese view es una forma, la otra idea que se me ocurrio es mandar el valor a la misma pagina, pero no logro dar con el evento:
Código HTML:
echo $form->input('periodo',array('label'=>false,'empty'=>array('0'=>'Selecciona el periodo'),'type'=>'select','options'=>$per,'onchange'=>$html->link($per,array('controller'=>'clients','action'=>'riosini','periodo:' . 'this.form', 'module:' . $module))));
  #2 (permalink)  
Antiguo 20/08/2013, 13:52
 
Fecha de Ingreso: febrero-2012
Mensajes: 37
Antigüedad: 12 años, 2 meses
Puntos: 5
Respuesta: como hacer combo en cakephp??

Que tal,
veo que en ese mismo método haces los tres findAll() y posteriormente los Set de esos resultados, entonces si traes todos los resultados en tus set, tendrías que filtrar mediante JavaScript según se vaya seleccionando la opción en tu select.

De no querer escribir esa función JS y lo quieres hacer con CakePHP, entonces debes hacer llamadas AJAX,sería algo asi:

seleccionar primera opción -> llamada AJAX (trae datos de opción dos)
->
seleccionar segunda opción -> llamada AJAX (trae datos de opción tres)
->
seleccionar tercera opción

Y finalmente haces el envio del formulario, una explicación más tecnica la puedes encontrar acá:
http://www.consultoriainnova.com/blog/cakephp/ajax-en-cakephp-2-0/

Saludos
  #3 (permalink)  
Antiguo 20/08/2013, 16:45
Avatar de zeuzft  
Fecha de Ingreso: junio-2009
Ubicación: peru
Mensajes: 358
Antigüedad: 14 años, 10 meses
Puntos: 2
Respuesta: como hacer combo en cakephp??

lo voy a probar, gracias por la pagina; pero yo estoy trabajando con cakephp 1.3, trabaja igual la 2da parte en la que me indica que observa el comportamiento del 1er select?
  #4 (permalink)  
Antiguo 20/08/2013, 17:17
 
Fecha de Ingreso: febrero-2012
Mensajes: 37
Antigüedad: 12 años, 2 meses
Puntos: 5
Respuesta: como hacer combo en cakephp??

Ahi tiene un event -> change

La lógica es básicamente la misma, para 1.3 puedes intentar con observeField

http://book.cakephp.org/1.3/en/The-M...pers/AJAX.html

y te paso otro link para ejemplos de cakephp < 2.0 con ajax:

http://www.cakephp.4uk.pl/

y por último este blog con una entrada que te podría ayudar:

http://cakephpilia.blogspot.mx/2008/...akephp-la.html

Saludos

Etiquetas: cakephp, combo, php, select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:24.