Ver Mensaje Individual
  #2 (permalink)  
Antiguo 20/05/2009, 08:26
Avatar de GatorV
GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Zend Framework + Layouts: Se pueden usar Controllers?

No es nadamas hacer un $this->layout()->header, si quieres tener su propio controlador tienes que hacer un plugin para el FrontController y usar el ActionStack para poder llenar ese segmento e inyectarlo en el layout por ejemplo:
Código php:
Ver original
  1. <?php
  2. class MyPlugin extends Zend_Controller_Plugin_Abstract {
  3.     protected $_stack;
  4.    
  5.     public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request) {
  6.         $stack = $this->getStack();
  7.         $menuRequest = new Zend_Controller_Request_Simple();
  8.         $menuRequest->setControllerName('head')
  9.                     ->setActionName('index');
  10.         $stack->pushStack($menuRequest);
  11.     }
  12.    
  13.     public function getStack() {
  14.         if (null === $this->_stack) {
  15.             $front = Zend_Controller_Front::getInstance();
  16.             if (!$front->hasPlugin('Zend_Controller_Plugin_ActionStack')) {
  17.                 $stack = new Zend_Controller_Plugin_ActionStack();
  18.                 $front->registerPlugin($stack);
  19.             } else {
  20.                 $stack = $front->getPlugin('ActionStack');
  21.             }
  22.             $this->_stack = $stack;
  23.         }
  24.        
  25.         return $this->_stack;
  26.     }
  27. }

Lo registras en tu FrontController y cada que hagas una llamada a X controller se va a ser el llamado a ese plugin y por ende a ese controller, luego dentro del controller solo haces un render a el response segment "header" o "footer" dependiendo del stack y como lo manejes.

Saludos.