Combos de Recargables Dependientes
De CidesaWiki
Línea 8: | Línea 8: | ||
<?php if ($sf_request->hasError('ocdatste{codpai}')): ?><?php echo form_error('ocdatste{codpai}', array('class' => 'form-error-msg')) ?> | <?php if ($sf_request->hasError('ocdatste{codpai}')): ?><?php echo form_error('ocdatste{codpai}', array('class' => 'form-error-msg')) ?> | ||
<?php endif; ?> <?php echo select_tag('ocdatste[codpai]', options_for_select($pais,'001'),array('onChange'=> remote_function(array( | <?php endif; ?> <?php echo select_tag('ocdatste[codpai]', options_for_select($pais,'001'),array('onChange'=> remote_function(array( | ||
- | 'update' => 'divEstados',//*****Div a Actualizar******* | + | 'update' => 'divEstados',//*****'''Div a Actualizar''''''******* |
- | 'url' => 'oycdatsol/combo?par=1',//*****Variable para el control de la accion******* (1) | + | 'url' => 'oycdatsol/combo?par=1',//*****Variable para el control de la accion'''******* '''(1)''' |
- | 'with' => "'pais='+this.value"//*****Valor de la variale de la caja de texto | + | 'with' => "'pais='+this.value"//*****'''Valor de la variale de la caja de texto''' |
))));?> | ))));?> | ||
</div> | </div> | ||
Línea 34: | Línea 34: | ||
- | creamos un archivo llamado comboSuccess.php donde vamos a colocar lo siguiente: | + | creamos un archivo llamado '''comboSuccess.php''' donde vamos a colocar lo siguiente: |
<pre> | <pre> | ||
Línea 59: | Línea 59: | ||
</pre> | </pre> | ||
- | Cabe destacar que lo mismos numero de combos que tenga el edit form lo debe tener el comboSuccess.php, despues agregamos lo siguiente en el action.class, esta funcion controla que se va a ejecutar con la variable de el control de la accion vea (1) | + | Cabe destacar que lo mismos numero de combos que tenga el edit form lo debe tener el '''comboSuccess.php'''''', despues agregamos lo siguiente en el action.class, esta funcion controla que se va a ejecutar con la variable de el control de la accion vea (1) |
<pre> | <pre> | ||
Línea 103: | Línea 103: | ||
</pre> | </pre> | ||
- | Hacemos una funcion y la colocamos en action.class en las funciones public function executeEdit() y en | + | Hacemos una funcion y la colocamos en '''action.class''' en las funciones public function '''executeEdit()''' y en '''protected function updateOcdatsteFromRequest()''', esto nos llamara todas las funciones de cargar combo de la siguiente manera: |
<pre> | <pre> | ||
Línea 112: | Línea 112: | ||
$this->estados = $this->Cargarestados($this->ocdatste->getCodpai());//colocar lo q viene de bd | $this->estados = $this->Cargarestados($this->ocdatste->getCodpai());//colocar lo q viene de bd | ||
} | } | ||
- | Nota: $this->ocdatste->getCodpai() son los parametros que le tenemos que debemos enviarles dependiendo de cuantos filtros debera tener la funcion de cargar como, vea(2) | + | '''Nota''': $this->ocdatste->getCodpai() son los parametros que le tenemos que debemos enviarles dependiendo de cuantos filtros debera tener la funcion de cargar como, '''vea(2)''' |
</pre> | </pre> | ||
- | Se utilizo una funcion para carga de combos que se encuentra en herramientas llamada Cargarcombo, y tiene el siguiente codigo: | + | Se utilizo una funcion para carga de combos que se encuentra en '''herramientas llamada Cargarcombo''', y tiene el siguiente codigo: |
<pre> | <pre> | ||
Línea 139: | Línea 139: | ||
</pre> | </pre> | ||
Y listooooooooooooooooooooooo | Y listooooooooooooooooooooooo | ||
- | Jsuarez::::.... | + | '''Jsuarez::::....''' |
Revisión de 15:09 30 abr 2007
Colocar esto en el form edit donde valla cada combo, donde pais es el padre y estado es el hijo
<?php echo label_for('ocdatste[codpai]', __($labels['ocdatste{codpai}']), 'class="required" ') ?> <div class="content<?php if ($sf_request->hasError('ocdatste{codpai}')): ?> form-error<?php endif; ?>"> <?php if ($sf_request->hasError('ocdatste{codpai}')): ?><?php echo form_error('ocdatste{codpai}', array('class' => 'form-error-msg')) ?> <?php endif; ?> <?php echo select_tag('ocdatste[codpai]', options_for_select($pais,'001'),array('onChange'=> remote_function(array( 'update' => 'divEstados',//*****'''Div a Actualizar''''''******* 'url' => 'oycdatsol/combo?par=1',//*****Variable para el control de la accion'''******* '''(1)''' 'with' => "'pais='+this.value"//*****'''Valor de la variale de la caja de texto''' ))));?> </div> <br> <?php echo label_for('ocdatste[codedo]', __($labels['ocdatste{codedo}']), 'class="required" ') ?> <div class="content<?php if ($sf_request->hasError('ocdatste{codedo}')): ?> form-error<?php endif; ?>"> <?php if ($sf_request->hasError('ocdatste{codedo}')): ?> <?php echo form_error('ocdatste{codedo}', array('class' => 'form-error-msg')) ?> <?php endif; ?> <div id="divEstados"> <?php echo select_tag('ocdatste[codedo]', options_for_select($estados,'001'),array('onChange'=> remote_function(array( 'update' => 'divMunicipios',//*****Div a Actualizar******* 'url' => 'oycdatsol/combo?par=2',//*****Variable para el control de la accion******* (1) 'with' => "'pais='+document.getElementById('ocdatste_codpai').value+'&estado='+this.value"//*****Valor de la variale de la caja de texto ))));?></div> </div>
creamos un archivo llamado comboSuccess.php donde vamos a colocar lo siguiente:
<?php use_helper('Object', 'Validation', 'Javascript') ?> <?php if ($tipo=='P') { echo select_tag('ocdatste[codedo]', options_for_select($estados,'001'),array('onChange'=> remote_function(array( 'update' => 'divMunicipios', 'url' => 'oycdatsol/combo?par=2', 'with' => "'pais='+document.getElementById('ocdatste_codpai').value+'&estado='+this.value" )))); } else if ($tipo=='E') { echo select_tag('ocdatste[codmun]', options_for_select($municipio,'001'),array('onChange'=> remote_function(array( 'update' => 'divParroquia', 'url' => 'oycdatsol/combo?par=3', 'with' => "'pais='+document.getElementById('ocdatste_codpai').value+'&estado='+document.getElementById('ocdatste_codedo').value+'&municipio='+this.value" )))); }
Cabe destacar que lo mismos numero de combos que tenga el edit form lo debe tener el comboSuccess.php', despues agregamos lo siguiente en el action.class, esta funcion controla que se va a ejecutar con la variable de el control de la accion vea (1)
public function executeCombo() { if ($this->getRequestParameter('par')=='1') { $this->estados = $this->Cargarestados($this->getRequestParameter('pais')); $this->tipo='P'; } elseif ($this->getRequestParameter('par')=='2') { $this->municipio = $this->Cargarmunicipio($this->getRequestParameter('pais'),$this->getRequestParameter('estado')); $this->tipo='E'; } }
Despues hacemos lo siguientes colocamos las funciones para hacer los llamados a la carga de los combos de la siguiente forma:
public function Cargarpais() (2) { $tablas=array('ocpais');//areglo de los joins de las tablas $filtros_tablas=array('');//arreglo donde mando los filtros de las clases $filtros_variales=array('');//arreglo donde mando los parametros de la funcion $campos_retornados=array('codpai','nompai');// arreglos donde me traigo el nombre y el codigo return $pais= Herramientas::Cargarcombo($tablas,$filtros_tablas,$filtros_variales,$campos_retornados); } public function Cargarestados($codpais) { $tablas=array('ocestado');//areglo de los joins de las tablas $filtros_tablas=array('codpai');//arreglo donde mando los filtros de las clases $filtros_variales=array($codpais);//arreglo donde mando los parametros de la funcion $campos_retornados=array('codedo','nomedo');// arreglos donde me traigo el nombre y el codigo return $estado= Herramientas::Cargarcombo($tablas,$filtros_tablas,$filtros_variales,$campos_retornados); }
Hacemos una funcion y la colocamos en action.class en las funciones public function executeEdit() y en protected function updateOcdatsteFromRequest(), esto nos llamara todas las funciones de cargar combo de la siguiente manera:
public function funciones_combos() { $this->pais = $this->Cargarpais(); $this->estados = $this->Cargarestados($this->ocdatste->getCodpai());//colocar lo q viene de bd } '''Nota''': $this->ocdatste->getCodpai() son los parametros que le tenemos que debemos enviarles dependiendo de cuantos filtros debera tener la funcion de cargar como, '''vea(2)'''
Se utilizo una funcion para carga de combos que se encuentra en herramientas llamada Cargarcombo, y tiene el siguiente codigo:
public static function Cargarcombo($tablas,$filtros_tablas,$filtros_variales,$campos_retornados) { $c = new Criteria(); if ($filtros_tablas[0]!='') { for($a=0;$a<count($filtros_tablas);$a++) { eval('$c->add('.ucfirst(strtolower($tablas[0])).'Peer::'.strtoupper($filtros_tablas[$a]).','.chr(39).ucfirst(strtolower($filtros_variales[$a])).chr(39).');'); //print ('$c->add('.ucfirst(strtolower($tablas[0])).'Peer::'.strtoupper($filtros_tablas[$a]).','.chr(39).ucfirst(strtolower($filtros_variales[$a])).chr(39).');'); } } eval('$lista_arreglo = '.ucfirst(strtolower($tablas[0])).'Peer::doSelect($c);'); $arreglo = array(); foreach($lista_arreglo as $obj_estado) { eval('$arreglo[$obj_estado->get'.ucfirst(strtolower($campos_retornados[0])).'()] = $obj_estado->get'.ucfirst(strtolower($campos_retornados[1])).'();'); } return $arreglo; }
Y listooooooooooooooooooooooo Jsuarez::::....