Combos de Recargables Dependientes

De CidesaWiki

(Diferencias entre revisiones)
Saltar a navegación, buscar
(.)
Línea 56: Línea 56:
return $municipio= Herramientas::Cargarcombo($tablas,$filtros_tablas,$filtros_variales,$campos_retornados);
return $municipio= Herramientas::Cargarcombo($tablas,$filtros_tablas,$filtros_variales,$campos_retornados);
-
       }
+
       }  
-
 
+
-
    public function Cargarparroquia($codpais,$codestado,$codmunicipio)
+
-
      {
+
-
        $tablas=array('ocparroq');//areglo de los joins de las tablas
+
-
$filtros_tablas=array('codpai','codedo','codmun');//Envio los filtros de las clases
+
-
$filtros_variales=array($codpais,$codestado,$codmunicipio);//Envio los parametros de la funcion
+
-
$campos_retornados=array('codpar','nompar');// Me traigo el nombre y el codigo
+
-
return $parroquia= Herramientas::Cargarcombo($tablas,$filtros_tablas,$filtros_variales,$campos_retornados);
+
-
+
-
}
+
-
    public function Cargarsector($codpais,$codestado,$codmunicipio,$codparroquia)
+
-
      {
+
-
        $tablas=array('ocsector');//areglo de los joins de las tablas
+
-
$filtros_tablas=array('codpai','codedo','codmun','codpar');//Envio  los filtros de las clases
+
-
$filtros_variales=array($codpais,$codestado,$codmunicipio,$codparroquia);//Envio los parametros de la funcion
+
-
$campos_retornados=array('codsec','nomsec');// arreglos donde me traigo el nombre y el codigo
+
-
return $sector= Herramientas::Cargarcombo($tablas,$filtros_tablas,$filtros_variales,$campos_retornados);
+
-
+
-
}
+
</pre>
</pre>
-
 
+
*Luego 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().
-
Colocar esto en el form edit donde vaya cada combo, donde pais es el padre y estado es el hijo
+
<pre>
<pre>
-
<?php echo label_for('ocdatste[codpai]', __($labels['ocdatste{codpai}']), 'class="required" ') ?>
+
  public function funciones_combos()
-
<div
+
    {
-
class="content<?php if ($sf_request->hasError('ocdatste{codpai}')): ?> form-error<?php endif; ?>">
+
      $this->pais = $this->Cargarpais();
-
<?php if ($sf_request->hasError('ocdatste{codpai}')): ?><?php echo form_error('ocdatste{codpai}', array('class' => 'form-error-msg')) ?>
+
      $this->estados = $this->Cargarestados($this->ocdatste->getCodpai());//contiene los datos de la bd
-
<?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>
+
-
 
+
</pre>
</pre>
 +
'''Nota''': $this->ocdatste->getCodpai() son los parametros que le tenemos que debemos enviarles dependiendo de cuantos filtros debera tener la funcion de cargar combo.
-
*creamos un archivo llamado '''comboSuccess.php''' donde vamos a colocar lo siguiente:
+
*En los templates de esta forma, creamos un archivo '''comboSuccess.php''' que contiene la secuencia de como se deben ejecutar los combos, haciendo uso de Ajax.
<pre>
<pre>
Línea 140: Línea 99:
</pre>
</pre>
-
'''Nota:''' 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)
+
'''Nota:''' Cabe destacar que el mismo número de combos que contenga el edit form lo debe tener el archivo '''comboSuccess.php''''''.
-
<pre>
+
* Luego en el actions.class agregamos la función que controla, que se va a ejecutar con la variable de el control de la acción.
-
 
+
-
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';
+
-
}
+
-
}
+
-
 
+
-
</pre>
+
-
 
+
-
*Despues hacemos lo siguientes colocamos las funciones para hacer los llamados a la carga de los combos de la siguiente forma:
+
<pre>
<pre>
-
public function Cargarpais() (2)
+
  public function executeCombo()
-
{
+
    {
-
$tablas=array('ocpais');//areglo de los joins de las tablas
+
      if ($this->getRequestParameter('par')=='1')
-
$filtros_tablas=array('');//arreglo donde mando los filtros de las clases
+
        {
-
$filtros_variales=array('');//arreglo donde mando los parametros de la funcion
+
  $this->estados = $this->Cargarestados($this->getRequestParameter('pais'));
-
$campos_retornados=array('codpai','nompai');// arreglos donde me traigo el nombre y el codigo
+
  $this->tipo='P';
-
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);
+
}
}
 +
elseif ($this->getRequestParameter('par')=='2')
 +
  {
 +
    $this->municipio = $this->Cargarmunicipio($this->getRequestParameter('pais'),$this->getRequestParameter('estado'));
 +
    $this->tipo='E';
 +
  }
 +
    }
</pre>
</pre>
-
*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:
+
*Por último, en el _edit_form se coloca el código php que imprime los combos; en cada uno de los campos.
-
 
+
<pre>
<pre>
-
public function funciones_combos()
+
<?php echo select_tag('ocdatste[codpai]', options_for_select($pais,'001'),array('onChange'=> remote_function(array(
-
{
+
'update'  => 'divEstados',//Div a Actualizar
-
$this->pais = $this->Cargarpais();
+
'url'      => 'oycdatsol/combo?par=1',//Variable para el control de la accion(1)
-
$this->estados = $this->Cargarestados($this->ocdatste->getCodpai());//colocar lo q viene de bd
+
'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,'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>
</pre>
</pre>
-
'''Nota''': $this->ocdatste->getCodpai() son los parametros que le tenemos que debemos enviarles dependiendo de cuantos filtros debera tener la funcion de cargar combo, '''vea(2)'''
 
-
*Se utilizo una funcion para carga de combos que se encuentra en '''herramientas llamada Cargarcombo''', y tiene el siguiente codigo:
 
-
<pre>
 
-
  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;
 
-
  }
 
-
</pre>
 
Y listooooooooooooooooooooooo
Y listooooooooooooooooooooooo
'''Jsuarez::::....'''
'''Jsuarez::::....'''

Revisión de 20:54 30 abr 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).');');
	  			//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;
	  }


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


    public function Cargarmunicipio($codpais,$codestado)
      {
        $tablas=array('ocmunici');//areglo de los joins de las tablas
	$filtros_tablas=array('codpai','codedo');//Envio los filtros de las clases
	$filtros_variales=array($codpais,$codestado);//Envio los parametros de la funcion
	$campos_retornados=array('codmun','nommun');// arreglos donde me traigo el nombre y el codigo
	return $municipio= Herramientas::Cargarcombo($tablas,$filtros_tablas,$filtros_variales,$campos_retornados);
		
       }    	


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

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


<?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>
//Campo que contiene el estado.
<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>


Y listooooooooooooooooooooooo Jsuarez::::....

Herramientas personales
Espacios de nombres
Variantes
Acciones
Navegación
Herramientas