Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Frameworks y PHP orientado a objetos (http://www.forosdelweb.com/f68/)
-   -   Controlador con includes y headers (http://www.forosdelweb.com/f68/controlador-con-includes-headers-580900/)

Masane 28/04/2008 14:07

Controlador con includes y headers
 
Hola amigos, tengo un problema.

Resulta que tengo un controlador que carga las paginas mediantes includes (Tiene q ser include, xq el explode en mi caso no me viene bien).

el controlador llama a la clase que necesite ejecutar dependiendo de un parametro accion que le llega del request, y con esa accion, instancia objetos de las clases requeridas, y esos objetos ejecutan un metodo "ejecutar" (todas las clases q ejecuta el navegador tienen los mismos nombres de metodos, pero cada metodo ace una cosa diferente dependiendo de la clase q sea), y el metodo ejecutar devuelve true o false dependiendo de como haya ido la operacion, y si da true, da valor a la propiedad de la clase "vista", y el controlador la recoge y ace un include con esa vista. La cosa es q tengo algunas clases q en vez de devolver una vista, tienen q redireccionar de nuevo al controlador para q este ejecute otras acciones para cargar otra pagina, y este redireccionamiento lo estoy aciendo con un header dentro del objeto accion, pero me salta un error y creo q es xq no me pilla el header...

Os ago un bocetillo de mi codigo

Código PHP:

// Controlador
$act $_POST["accion"];
$accion = new Accion($act);

if (
$accion->ejecutar())
{
    
$vista $accion->getVista();
   
// Y mas codigo q no viene al caso....
}
else
{
    
$vista "error.php";
}

include(
$vista); 

Código PHP:

//Clase accion
class Accion
{
// Me salto el constructor y demas...
function ejecutar()
{
   
header("Location: controlador.php?accion=".$_GET["accion"]);


Seria algo asi, aunq evidentemente no esta exacto, xq os podeis morir para leerlo todo. Ese seria el procedimiento a seguir, y de antemano aclaro q no imprimo nada de html antes de acer ni los includes ni los header del controlador, eso lo ago en las paginas para las vistas, pero en el controlador y en sus clases, nanai ...

Alguna idea, keja o sugerencia sobre mi codigo y este puñetero problema?

Se agradece la ayuda por adelantado ;)

GatorV 28/04/2008 15:03

Re: Controlador con includes y headers
 
Hola masane,

¿que error te marca? En dado caso después del header puedes usar exit para que la redirección sea al momento.

Saludos.

Masane 28/04/2008 15:07

Re: Controlador con includes y headers
 
Me dice q no encuentra el archivo del include, pero de un include del controlador q llama a la clase accion, y en una linea posterior a la ejecucion del metodo ejecutar del objeto accion. Amos, q se pasa el header por los forros y sigue con el codigo del controlador como si tal cosa, y ahi es donde esta el error, xq yo no le asigno la vista de una pagina php, sino q lo redirecciono al controlador con otra accion diferente...

Se puede incluir un header dentro de un include? :S xq no e leido por ningun sitio q no se pueda, pero esto q me ace es bastante raro

GatorV 28/04/2008 15:13

Re: Controlador con includes y headers
 
Prueba agregar el exit:
Código PHP:

//Clase accion
class Accion
{
// Me salto el constructor y demas...
function ejecutar()
{
   
header("Location: controlador.php?accion=".$_GET["accion"]);
   exit();


Saludos.

Masane 28/04/2008 15:33

Re: Controlador con includes y headers
 
al final no me a exo falta el exit(), era un error q me daba xq la contraseña en md5 es de 32 digitos, y en la base de datos el tamaño del campo del password era de 20, y me saltaba un error al compararlas, pero como soy tan chochona, en vez de guardar las vistas en "$this->vista = ..." para poder recogerla luego con el getVista(), voy y pongo "$vista->..." ... Y por esto son todos mis errores, siempre es lo mismo... keda demostrado q lo mio es java y no php :'(

Gracias de todas formas, acabo de aprender un buen truco con ese exit ;)


La zona horaria es GMT -6. Ahora son las 05:12.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.