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

duda con zend view

Estas en el tema de duda con zend view en el foro de Zend en Foros del Web. Hola! estoy aprendiendo a usar ZFW y tengo una duda, estuve leyendo el manual de zend pero no logro encontrar lo que quiero, seguramente sea ...
  #1 (permalink)  
Antiguo 04/02/2009, 13:53
 
Fecha de Ingreso: noviembre-2007
Ubicación: Lanus, Buenos Aires
Mensajes: 178
Antigüedad: 10 años, 7 meses
Puntos: 14
duda con zend view

Hola! estoy aprendiendo a usar ZFW y tengo una duda, estuve leyendo el manual de zend pero no logro encontrar lo que quiero, seguramente sea algo facil y alguien me pueda solucionar el problemita :P

tengo esto

Código PHP:
class IndexController extends Zend_Controller_Action 
{

    public function 
indexAction() 
    {
    
    
$this->view->bienvenido 'Zend Framework MVC!';
    
    
$this->render();
    
$this->render("otro");
    
$this->render("otromas");
    }
    

functiona bien, nada mas que de esta manera no ejecuta "otroController" y "otromasController" sino que va directamente a la vista ( no? :P )

cual es la forma correcta de hacer lo que yo quiero?

saludos y gracias!
  #2 (permalink)  
Antiguo 04/02/2009, 14:12
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 12 años
Puntos: 2126
Respuesta: duda con zend view

Hola rodrigo_00,

Para eso debes de usar $this->forward() para enviar a otro controller.

Saludos
  #3 (permalink)  
Antiguo 04/02/2009, 14:26
 
Fecha de Ingreso: noviembre-2007
Ubicación: Lanus, Buenos Aires
Mensajes: 178
Antigüedad: 10 años, 7 meses
Puntos: 14
Respuesta: duda con zend view

gracias gator lo voy a probar

ahora hice esto

Código PHP:
class IndexController extends Zend_Controller_Action 
{
    public function 
indexAction() 
    {
    
    
$this->view->bienvenido 'Zend Framework MVC!';
        
$this->verOtro();
        
$this->verMenu()
    }
    
    public function 
verOtro()
    {
      
$this->view->otroTxt="otroooooooooo!!!";
      
$this->render("otro");
    }

    public function 
verMenu()
    {

        ........................................................................

    }


es lo mejor?? supongamos que en el index de mi web quiero cargar 2 o 3 secciones, y quiero armar un menu lateral, hacerlo asi es correcto??
  #4 (permalink)  
Antiguo 04/02/2009, 14:27
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 12 años
Puntos: 2126
Respuesta: duda con zend view

No, lo mejor es tener un controlador independiente y mejor usar el plugin de ActionStack para automaticamente llamar a tus controladores y levantar tu sitio.

Saludos
  #5 (permalink)  
Antiguo 04/02/2009, 14:48
 
Fecha de Ingreso: noviembre-2007
Ubicación: Lanus, Buenos Aires
Mensajes: 178
Antigüedad: 10 años, 7 meses
Puntos: 14
Respuesta: duda con zend view

estoy buscando y no encuentro mucho al respecto :( hay algun ejemplo por ahi?? :D
  #6 (permalink)  
Antiguo 04/02/2009, 14:55
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 13 años
Puntos: 32
Respuesta: duda con zend view

Que tal Rodrigo

Si es la primera vez que estás probando Zend, te sugiero que busques un proyecto de ejemplo sencillo y lo veas funcionar.

Conceptualmente hablando, la forma básica de trabajo es:
  • Cada método del Controller es un action
  • Cada action, cuando quiere que pase el control a la vista lo que hace es ejecutar un $this->render();
  • Por defecto, a menos que digas lo contrario, todo action aunque no tenga un render llega al final de su ejecución e igual hace un "render por defecto" usando el mismo nombre del action para buscar un [action].phtml (vista).
  • Para lo anterior, lo sugerido es que siempre hagas el $this->render(), así nada deja de andar en caso que cambie la configuración para que no lo haga por defecto.
  • Se usa mucho para hacer una action para Ajax decirle que no redireccione a la vista:
    • $this->_helper->layout->disableLayout();
    • $this->_helper->viewRenderer->setNoRender();
  • Si quieres ir hacia un render distinto al nombre del action, usas el render y como parámetro le pasas la nueva vista.
Eso es lo básico, luego ya es otro uso avanzado y para eso hay que preguntarle más a GatorV

Pero no creo que aún estés en esa etapa, así que vuela bajo y aprende lo esencial.

PD: para las secciones y menú que comentas, deberás trabajar en el layout y en cómo se van llamando las vistas unas a otras.

Te paso un ejemplo hecho en SURFORCE_CORE
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #7 (permalink)  
Antiguo 05/02/2009, 16:22
 
Fecha de Ingreso: noviembre-2007
Ubicación: Lanus, Buenos Aires
Mensajes: 178
Antigüedad: 10 años, 7 meses
Puntos: 14
Respuesta: duda con zend view

gracias enrique, estuve leyendo y probando bastante y todo lo que dices creo que ya lo tengo perfectamente incorporado jaja

ahora mi duda viene por aqui... tengo esto

Código PHP:
<?= $this->doctype() ?>
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  <title>Zend Framework Quickstart Application</title>
  <? echo $this->headLink()->appendStylesheet('global.css'?>
</head> 
<body>

  <? echo $this->render('header.phtml'?>

  <? echo $this->layout()->content ?>
  
  <? echo $this->render('footer.phtml'?>

</body>
</html>
lo cual esta perfecto si el header y el footer son estaticos, pero si en estos archivos necesito levantar datos de una bdd por ej para armar los menus, como hago??

y otra duda que tengo respecto al actionStack...

por ej estoy en /public/index/index y hago

Código PHP:
$request->setActionName('otro')
                ->
setControllerName('otro');
$this->_helper->actionStack($request); 
y me tira el siguiente error

Exception information:
Message: script 'otro/otro.phtml' not found in path...


porque lo que yo trato de hacer es mostrar "index/otro.phtml"... donde me equivoco?? como lo soluciono??

saludos!! =)
  #8 (permalink)  
Antiguo 05/02/2009, 16:49
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 13 años
Puntos: 32
Respuesta: duda con zend view

Código PHP:
<?= $this->doctype() ?>
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  <title>Zend Framework Quickstart Application</title>
  <? echo $this->headLink()->appendStylesheet('global.css'?>
</head> 
<body>

  <? echo $this->render('header.phtml'?>

  <? echo $this->layout()->content ?>
  
  <? echo $this->render('footer.phtml'?>

</body>
</html>
Detalles a corregir:
  1. Sustituye los <?= por <?php echo, lo mismo que <? por <?php, está en desuso (por más que veas algunos ejemplos en el manual de Zend, eso es error de algún programador descarriado ).
  2. Cambia iso-8859-1 por UTF-8, también en desuso.
  3. En el render solo debes decir el nombre, no el archivo completo.

Cita:
lo cual esta perfecto si el header y el footer son estaticos, pero si en estos archivos necesito levantar datos de una bdd por ej para armar los menus, como hago??
También está explicado en la librería del proyecto que te pasé... lo bajaste e instalaste para probar? Tiene un menú dinámico que levanta la información de la base desde un controller y luego se lo pasa al layout de esta forma:

Código PHP:
$layout Zend_Layout::getMvcInstance();

$layout->menu Models_Menu::getMenu(
   
$this->_registry->config->application->id
);
$layout->menuItems Models_Menu::getMenuItemsFromModule(
   
$this->view->moduleName
); 
Cita:
y otra duda que tengo respecto al actionStack...
En esta parte no sé que quieres hacer, me da la impresión que quieres hacer mucho en poco tiempo, ve por partes, de a pasos y prueba instalar otros proyectos de ejemplo que ya tengan más temas resueltos y aprende de ellos.
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #9 (permalink)  
Antiguo 05/02/2009, 17:00
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 12 años
Puntos: 2126
Respuesta: duda con zend view

Lo que pasa es que en tu $request->setControllerName('otro') debes de usar $request->setControllerName('index'), para que vaya a index/otro. Aunque yo te recomendaría más usar $this->forward() si solamente vas a pasar por ejemplo a una accion para levantar el menu.

Saludos
  #10 (permalink)  
Antiguo 22/03/2016, 10:18
 
Fecha de Ingreso: abril-2008
Mensajes: 33
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: duda con zend view

Yo tambien queria realizar lo siguiente:

<? echo $this->render('header.phtml') ?>

O sea cargar dentro de un phtml otro pthml pero me da error.

Que necesito para que me lo cargue con una parte mas, algo en el controller?
Estoy empezando en Zend y hay ciertas funcionalidades que no las consigo implementar.
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 13:47.