Combos de Recargables Dependientes

De CidesaWiki

(Diferencias entre revisiones)
Saltar a navegación, buscar
Línea 22: Línea 22:
  return $arreglo;
  return $arreglo;
  }
  }
 +
 +
</pre>
 +
 +
*Luego en el Actions.class.php, creamos la funciones Cargar de cada campo asociado al combo.
 +
 +
<pre>
 +
 +
  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 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>

Revisión de 20:30 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 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);
		
	}	


Colocar esto en el form edit donde vaya 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>




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


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


	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 combo, vea(2)


   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::::....

Herramientas personales
Espacios de nombres
Variantes
Acciones
Navegación
Herramientas