Ver Mensaje Individual
  #8 (permalink)  
Antiguo 08/04/2011, 11:58
Avatar de destor77
destor77
 
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 19 años, 6 meses
Puntos: 43
Respuesta: Como pasar varios parametros a una accion de un controlador

Hola,
mira, yo tengo el siguiente código en una clase mia, para poder armar url amigables a partir de una url de este estilo:

index.php?controlador=usuarios&accion=update&nombr e=pepe&apellido=pepa

me la convierte en:

usuario/update/nombre/pepe/apellido/papa

el codigo es el siguiente:
Código PHP:
Ver original
  1. /**
  2.          * setea los parametros de la url
  3.          * @version 0.1
  4.          * @author Lucas M. sastre
  5.          * @access private
  6.          * @name setParametros
  7.          *
  8.          * Modificaciones
  9.          */
  10.     private function setParametros($param) {
  11.             //limpio los parametros previos
  12.         $this->parametros = '';
  13.             //extraigo los parametros de la url general
  14.         $valores = explode('index.php?',$param);
  15.             //separo los paremtros ya sea por & o por &
  16.             $amp = explode('&',$valores[1]);
  17.             if(!empty($amp)){
  18.                 $valores = $amp;
  19.             }
  20.             else{
  21.                 $valores = explode('&',$valores[1]);
  22.             }
  23.  
  24.             //recorro los valores y voy armando la url
  25.         foreach ($valores as $key => $val) {
  26.         $segmento =  explode('=',$val);
  27.                 //valido si el primer segmento es el del lenguaje
  28.         if($segmento[0]!='leng') {
  29.                     //valido si el paremetro es el controlador
  30.             if($key=='controlador') {
  31.             $this->parametros .= strtolower(preg_replace('/([A-Z])/', '-$1',$segmento[1]))."/";
  32.             }
  33.                     //valido si segmento es el de la paginacion
  34.             elseif($segmento[0]=='verPagina'){
  35.             $this->parametros .= 'Pagina/'.$segmento[1]."/";
  36.             }
  37.                     //valido que el segmento sea distinto a id
  38.             elseif($key!='id') {
  39.             $acentos=array("á","é","í","ó","ú","ñ","Á","É","Í","Ó","Ú","Ñ");
  40.             $sinacentos=array("a","e","i","o","u","n","A","E","I","O","U","N");
  41.             $value=str_replace($acentos,$sinacentos,$segmento[1]);
  42.             $this->parametros .= preg_replace("@[^A-Za-z0-9-]+@i","-",$value)."/";
  43.             }
  44.         }
  45.         }
  46.     }

esto sirve en mi caso, pero para el tuyo, tal vez lo que tengas que hacer es obtener todo el query string que hay despues de la acción y armar un arreglo con eso identificando parametro y valor.
Puedes ver sino como lo hace codeigniter el tema de los segmentos de parametros.
Espero haberme explicado bien y que te sirva de algo.