Foros del Web » Programando para Internet » PHP » Zend »

Zend, flujo de init(), forward() y redirect()

Estas en el tema de Zend, flujo de init(), forward() y redirect() en el foro de Zend en Foros del Web. Hola. No entiendo porque un init() se ejecuta dos veces al acceder desde la url a un modulo/controlador. http://localhost/libreria/public/libros/libro Tengo esto: class Libros_LibroController extends Zend_Controller_Action ...
  #1 (permalink)  
Antiguo 17/08/2010, 00:26
 
Fecha de Ingreso: noviembre-2008
Mensajes: 288
Antigüedad: 16 años, 1 mes
Puntos: 2
Zend, flujo de init(), forward() y redirect()

Hola.

No entiendo porque un init() se ejecuta dos veces al acceder desde la url a un modulo/controlador.
http://localhost/libreria/public/libros/libro

Tengo esto:

class Libros_LibroController extends Zend_Controller_Action
{
public function init()
{
echo "<br>estoy en init";
}
public function indexAction()
{
echo "<br>estoy en index";
$this->_forward('listar');
}
public function listarAction()
{
echo "<br>estoy en listar";
die();
}

y la salida es:
estoy en init
estoy en init
estoy en listar

lo curioso también, es que no aparece el echo de index.

muy raro no?
  #2 (permalink)  
Antiguo 17/08/2010, 09:18
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Zend, ejecución de los ini()

Muy raro no debería de pasar, estas usando algún plugin o algo?
  #3 (permalink)  
Antiguo 17/08/2010, 10:08
 
Fecha de Ingreso: noviembre-2008
Mensajes: 288
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: Zend, ejecución de los ini()

Hola GatorV!
tengo una extensión del Zend_Controller_Action que quiero usar con esta clase, pero al aparecerme este error de problema de declaración de funciones, empece a limpiar para ver de donde viene el problema, y así es que tengo ese sencillo ejemplo que describi.

Sigo probando con ese código simple y estoy observando lo siguiente respecto del funcionamiento de Zend, dime tu si estas afirmaciones son correctas:

-cuando hay un forward entre Actions, las salidas html al explorador de los Actions anteriores, se pierden. (por eso sería que no veo el echo del index)

-cada Action reejecuta el init(). ( de ahi que salga el echo del init cada vez que hago un forward a otro Action)

Suponiendo que esto sea correcto, ¿cómo hago entonces para que el init se ejecute solo una vez y no en cada forward ?
  #4 (permalink)  
Antiguo 17/08/2010, 10:32
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Zend, ejecución de los ini()

Lo que pasa es que esa es la naturaleza del forward, si ves el flujo de Zend esta dentro de un loop, al encontrar un forward vuelve a entrar, si no quieres que se re-ejecute el init, haz un redirect que crea una nueva petición http.

Saludos.
  #5 (permalink)  
Antiguo 17/08/2010, 10:44
 
Fecha de Ingreso: noviembre-2008
Mensajes: 288
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: Zend, ejecución de los ini()

Perfecto GatorV!! muchas gracias!! :)


PD: si puedes, corrige el título del post, pues lo tipee erroneamente, en lugar de ini() debería ser init(). y quizás...para que sea más util, debiera llamarse algo como 'Zend, flujo de init(), forward() y redirect()'.

Etiquetas: flujo, forward, init, php, redirect
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:40.