Ver Mensaje Individual
  #7 (permalink)  
Antiguo 08/04/2011, 10:20
Avatar de carlos_belisario
carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Como pasar varios parametros a una accion de un controlador

Cita:
Iniciado por masterpuppet Ver Mensaje
Que tal carlos_belisario,

Hay algo que no entiendo, si tu router es capaz de darse cuenta cual es el controller y el action, como no puede parsear el resto de parámetros ?, en todo caso deberías postear el router.

Saludos.
porque no he encontrado la manera de hacer que los obtenga solo logro que obtenga 1
Código PHP:
Ver original
  1. <?php
  2. class FrontController {
  3.     public static function Main() {    
  4.         $controllerDir = "controller/";
  5.         // Obtenemos el controlador y la accion    
  6.         if(isset($_GET['controller'])){
  7.             $controller = $_GET['controller'];
  8.         }
  9.         else{
  10.             $controller = "index";
  11.         }      
  12.         if(isset($_GET['action'])){
  13.                     $accion = $_GET['action'];
  14.         }      
  15.         else{
  16.             $accion = "index";
  17.         }  
  18. /**lo que hice anoche inventado loqueras*/ 
  19.         if(count($_GET) > 2){
  20.             foreach($_GET as $key => $value){
  21.                 if($key != "controller" && $key != "action"){
  22.                     $parametros[] = $value;
  23.                 }  
  24.             }
  25.         }
  26. /*lo que hice anoche inventado loqueras**/ 
  27.         $controllerFile = $controllerDir . $controller . "_controller.php";
  28.         if( !file_exists( $controllerFile ) ) { // Si no existe el archivo lanzamos una excepcion
  29.             throw new FrontControllerException( "No se encontro el archivo especificado" );
  30.         }
  31.         $controllerClass = $controller . "Controller";
  32.         if( class_exists( $controllerClass, false ) ) { // Si existe el archivo pero no esta la clase lanzamos otra excepcion
  33.             throw new FrontControllerException( "El controlador fue cargado pero no se encontro la clase" );
  34.         }
  35.         require_once($controllerFile); 
  36.         $controllerInst = new $controllerClass();      
  37.         if( !is_callable( array( $controllerInst, $accion ) ) ) { // Comprobamos si la accion es posible llamarla
  38.             throw new FrontControllerException( "El controlador no tiene definida la accion $accion" );
  39.         }
  40.         else {
  41. /**lo que hice anoche inventado loqueras*/ 
  42.             if(isset($parametros)){            
  43.                 $parm = implode(',',$parametros);
  44.                 $controllerInst->$accion($parm);
  45.             }
  46. /*lo que hice anoche inventado loqueras**/ 
  47.             else{
  48.                 $controllerInst->$accion(); // Llamamos a la accion y dejamos el proceso al controlador
  49.             }  
  50.         }
  51.     }
  52. }
  53. ?>
este es una clase FrontController que consegui hace tiempo leyendo sobre este patron, y funciona bien, de echo creo que solo modifique algunas cosas nada mas, y claro anoche haciendo pruebas hice lo de los paramtros que es lo que esta entre comentarios
Cita:
/**lo que hice anoche inventado loqueras*/
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way