Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Zend (http://www.forosdelweb.com/f182/)
-   -   duda con zend view (http://www.forosdelweb.com/f182/duda-con-zend-view-669509/)

rodrigo_00 04/02/2009 14:53

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! :aplauso:

GatorV 04/02/2009 15:12

Respuesta: duda con zend view
 
Hola rodrigo_00,

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

Saludos :adios:

rodrigo_00 04/02/2009 15:26

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??

GatorV 04/02/2009 15:27

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 :adios:

rodrigo_00 04/02/2009 15:48

Respuesta: duda con zend view
 
estoy buscando y no encuentro mucho al respecto :( hay algun ejemplo por ahi?? :D

enriqueplace 04/02/2009 15:55

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

rodrigo_00 05/02/2009 17:22

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 :aplauso:

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?? :pensando:

saludos!! =)

enriqueplace 05/02/2009 17:49

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.

GatorV 05/02/2009 18:00

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 :adios:

Yoshua9 22/03/2016 10:18

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.


La zona horaria es GMT -6. Ahora son las 21:34.

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