Cita: http://host/grupos/{id_grupo}/eventos/{id_evento}
Por qué pasarías primero el id y luego la funcion? Esto funcionaría mucho mejor!
Código PHP:
Ver originalhttp://host/grupos/eventos/{id_grupo}/{id_evento}
La razón es que las dos primeras variables corresponden a controlador y accion. Es decir, cada controlador tiene muchas acciones. Vos en tu ejemplo solo estabas contemplando que "
http://host/grupos/{id_grupo} y la petición la gestiona GruposController.class.php". Pero lo ideal es que primero definas algunas reglas logicas para que funcione bien.
A ver, en limpio (si puedo):
- cada controlador puede tener un metodo index que va a ser el que se ejecute por defecto. Ese puede ejecutarse en caso de que en vez de convocar a otro metodo pases directamente un numero (un parametro numerico).
- cada controlador puede llamar a cualquiera de sus metodos y pasarle dos o mas variables, siempre y cuando la accion se declare en la url.
Te paso un ejemplo de un FrontController que estoy usando yo, y que me funciona para proyectos de pequeña escala (sin usar objetos):
Código PHP:
Ver original
include "config.php";
include COMMONS."app/controladores/controlador.php"; // controlador que incluye funciones utiles
/* Ruteo de variables GET */
if ( isset($_GET['route']) ) {
$controlador = (isset($urlVars[0])) ?
$urlVars[0] : null; $accion = (isset($urlVars[1])) ?
$urlVars[1] : null; $param1 = (isset($urlVars[2])) ?
$urlVars[2] : null; $param2 = (isset($urlVars[3])) ?
$urlVars[3] : null; $param3 = (isset($urlVars[4])) ?
$urlVars[4] : null;
if(is_file(NOVEDADES
."app/controladores/controlador_".$controlador.".php")) require "controladores/controlador_".$controlador.".php";
else
require "controladores/controlador_errores.php";
eval($accion($param1, $param2, $param3)); else
index();
}
else
{
require "controladores/controlador_articulos.php"; // controlador default
index(); // funcion default
}