Combos de Recargables Dependientes

De CidesaWiki

(Diferencias entre revisiones)
Saltar a navegación, buscar
 
(18 ediciones intermedias no se muestran.)
Línea 1: Línea 1:
-
*El siguiente código se encuentra en el módulo Obras; forma oycdatsol. Para cargar los combos creamos una función CargarCombo en lib/herramientas, la cual contiene el siguiente código.
+
*El siguiente código se encuentra en el módulo Obras; forma oycdatsol. Para cargar los combos creamos una función Cargarcombo en lib/herramientas, la cual contiene el siguiente código.
<pre>
<pre>
-
public static function Cargarcombo($tablas,$filtros_tablas,$filtros_variales,$campos_retornados)
+
  public static function Cargarcombo($tablas,$filtros_tablas,$filtros_variales,$campos_retornados)
-
  {
+
    {
-
  $c = new Criteria();
+
      $c = new Criteria();
-
  if ($filtros_tablas[0]!='')
+
      if ($filtros_tablas[0]!='')
-
  {
+
{
-
  for($a=0;$a<count($filtros_tablas);$a++)
+
  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).');');
+
      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);');
+
      eval('$lista_arreglo = '.ucfirst(strtolower($tablas[0])).'Peer::doSelect($c);');
-
  $arreglo = array();
+
      $arreglo = array();
-
  foreach($lista_arreglo as $obj_estado)
+
      foreach($lista_arreglo as $obj_estado)
-
  {
+
{
-
  eval('$arreglo[$obj_estado->get'.ucfirst(strtolower($campos_retornados[0])).'()] = $obj_estado->get'.ucfirst(strtolower($campos_retornados[1])).'();');
+
  eval('$arreglo[$obj_estado->get'.ucfirst(strtolower($campos_retornados[0])).'()] = $obj_estado->get'.ucfirst(strtolower($campos_retornados[1])).'();');
-
  }
+
}
-
  return $arreglo;
+
return $arreglo;
-
  }
+
  }
</pre>
</pre>
Línea 49: Línea 49:
</pre>
</pre>
-
*En el mismo '''actions.class''' creamos una función general que contiene la llamada de cada uno de los Cargar que detallamos en las lineas anteriores. Esta función es llamada en las funciones executeEdit() y updateOcdatsteFromRequest().
+
'''Nota:''' En el mismo '''actions.class''' creamos una función general que contiene la llamada de cada uno de los Cargar que detallamos en las lineas  
 +
anteriores.  
 +
*Hacemos el llamdo de la funcion de funciones_combos en la executeEdit() y en updateClaseFromRequest():
<pre>
<pre>
 +
  public function executeEdit()
 +
    {
 +
      $this->funciones_combos();
 +
      ...
 +
      ...
 +
      ...
 +
    }
 +
  public function updateClaseFromRequest()
 +
    {
 +
      $this->funciones_combos();
 +
      ...
 +
      ...
 +
      ...
 +
    }
 +
</pre>
 +
 +
<pre>
 +
  //En el Action.class
   public function funciones_combos()
   public function funciones_combos()
     {
     {
Línea 71: Línea 91:
<?php if ($tipo=='P')
<?php if ($tipo=='P')
{
{
-
  echo select_tag('ocdatste[codedo]', options_for_select($estados,'001'),array('onChange'=> remote_function(array(
+
  echo select_tag('ocdatste[codedo]', options_for_select($estados,'','include_custom=Seleccione'),array('onChange'=> remote_function(array(
'update'  => 'divMunicipios',
'update'  => 'divMunicipios',
'url'      => 'oycdatsol/combo?par=2',
'url'      => 'oycdatsol/combo?par=2',
Línea 79: Línea 99:
else if ($tipo=='E')
else if ($tipo=='E')
{
{
-
echo select_tag('ocdatste[codmun]', options_for_select($municipio,'001'),array('onChange'=> remote_function(array(
+
echo select_tag('ocdatste[codmun]', options_for_select($municipio,'','include_custom=Seleccione'),array('onChange'=> remote_function(array(
'update'  => 'divParroquia',
'update'  => 'divParroquia',
'url'      => 'oycdatsol/combo?par=3',
'url'      => 'oycdatsol/combo?par=3',
Línea 110: Línea 130:
</pre>
</pre>
-
*Por último, en el _edit_form se coloca el código php que imprime los combos; en cada uno de los campos.
+
*En el archivo editSuccess.php agregar las variables que hace referencia al pais, estados, etc
 +
<pre>
 +
<div id="sf_admin_content">
 +
<?php include_partial('oycdatsol/edit_form', array('ocdatste' => $ocdatste, 'labels' => $labels, 'desste' => $desste, 'pais' => $pais, 'estados' =>  $estados)) ?>
 +
</div>
 +
 
 +
</pre>
 +
 
 +
*Por último, en el _edit_form se coloca el código php que imprime los combos; en cada uno de sus respecivos campos.
<pre>
<pre>
//Campo que contiene el pais.
//Campo que contiene el pais.
-
<?php echo select_tag('ocdatste[codpai]', options_for_select($pais,'001'),array('onChange'=> remote_function(array(
+
<?php echo select_tag('ocdatste[codpai]', options_for_select($pais,'','include_custom=Seleccione'),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)
Línea 123: Línea 151:
//Campo que contiene el estado.
//Campo que contiene el estado.
<div id="divEstados">
<div id="divEstados">
-
<?php echo select_tag('ocdatste[codedo]', options_for_select($estados,'001'),array('onChange'=> remote_function(array(
+
<?php echo select_tag('ocdatste[codedo]', options_for_select($estados,'','include_custom=Seleccione'),array('onChange'=> remote_function(array(
'update'  => 'divMunicipios',//Div a Actualizar
'update'  => 'divMunicipios',//Div a Actualizar
'url'      => 'oycdatsol/combo?par=2',//Variable para el control de la accion(1)
'url'      => 'oycdatsol/combo?par=2',//Variable para el control de la accion(1)
Línea 131: Línea 159:
</pre>
</pre>
-
Y listooooooooooooooooooooooo
+
 
 +
== Esquema ==
 +
 
 +
*Ahora se va a mostrar un esquema sistemático de como trabaja la función para llenar el combo en todo el proceso:
 +
 
 +
*Al editar un dato se realiza una serie de llamados a las funciones, que se muestra a continuación:
 +
<pre>
 +
  Editar
 +
    |---> Funciones_combos()
 +
                |---> $this->pais()= $this->Cargarpais();
 +
                                              |--->CargarCombos()
 +
                                                          |---> $this->pais() = 'p'
 +
 
 +
</pre>
 +
 
 +
 
 +
Y listooooooooooooooooooooooo a jugar Symfony
'''Jsuarez::::....'''
'''Jsuarez::::....'''

Última versión de 19:22 14 jun 2007


  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).');');
	  			
	    }
	 }
       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;
  }


  public function Cargarpais()
   {
     $tablas=array('ocpais');//arreglo de los joins de las tablas
     $filtros_tablas=array('');//Envio  los filtros de las clases
     $filtros_variales=array('');//Envio  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');//arreglo de los joins de las tablas
       $filtros_tablas=array('codpai');//Envio  los filtros de las clases
       $filtros_variales=array($codpais);//Envio  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);
     }        	

Nota: En el mismo actions.class creamos una función general que contiene la llamada de cada uno de los Cargar que detallamos en las lineas anteriores.

  public function executeEdit()
    {
      $this->funciones_combos(); 
      ...
      ...
      ...
    }

  public function updateClaseFromRequest()
    {
      $this->funciones_combos(); 
      ...
      ...
      ...
    }
  //En el Action.class
  public function funciones_combos()
    {
      $this->pais = $this->Cargarpais();
      $this->estados = $this->Cargarestados($this->ocdatste->getCodpai());//contiene los datos de la bd
    }

Nota: $this->ocdatste->getCodpai() son los parametros que le tenemos que debemos enviarles dependiendo de cuantos filtros debera tener la funcion de cargar combo.


<?php use_helper('Object', 'Validation', 'Javascript') ?>

<?php if ($tipo=='P')
{
 echo select_tag('ocdatste[codedo]', options_for_select($estados,'','include_custom=Seleccione'),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,'','include_custom=Seleccione'),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"
  ))));
}

Nota: Cabe destacar que el mismo número de combos que contenga el edit form lo debe tener el archivo comboSuccess.php.


  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';
	  }
     }

 <div id="sf_admin_content">
 <?php include_partial('oycdatsol/edit_form', array('ocdatste' => $ocdatste, 'labels' => $labels, 'desste' => $desste, 'pais' => $pais, 'estados' =>  $estados)) ?>
 </div>

//Campo que contiene el pais.
<?php echo select_tag('ocdatste[codpai]', options_for_select($pais,'','include_custom=Seleccione'),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>
//Campo que contiene el estado.
<div id="divEstados">
<?php echo select_tag('ocdatste[codedo]', options_for_select($estados,'','include_custom=Seleccione'),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>


Esquema

  Editar
    |---> Funciones_combos()
                |---> $this->pais()= $this->Cargarpais();
                                               |--->CargarCombos()
                                                           |---> $this->pais() = 'p'


Y listooooooooooooooooooooooo a jugar Symfony Jsuarez::::....

Herramientas personales
Espacios de nombres
Variantes
Acciones
Navegación
Herramientas