HeaderFooter():: plugin para el Zend_Controller
Hoy estaba leyendo el articulo de killerphp.com (Zend framework components part2: Zend_View) y veo que nos pone un plugin para Zend_Controller.
Este plugin se encarga de agregar un archivo al principio(header.phtl) utilizando Zend_Controller_Plugin_Abstract::preDispatch(); y otro al final(footer.phtml) usando Zend_Controller_Plugin_Abstract::postDispatch().
He modificado la clase original de la página, porque me daba error. La clase quedaría así:
/*
* Handles the header / footer by capturing the preDispatch and postDispatch of the
* response object
*/
class Headerfooterview extends Zend_Controller_Plugin_Abstract
{
private $view;
function __construct()
{
$this->view = new Zend_View();
$this->view->setScriptPath(’application/views/scripts’);
}
/*
* Run at the beginning of the controller’s response object initialization
*/
public function preDispatch( Zend_Controller_Request_Abstract $request )
{
$this->getResponse()->prepend(’header’,$this->view->render(’header.phtml’,null,true));
}
/*
* Run at the end of the controller’s response object initialization
*/
public function postDispatch( Zend_Controller_Request_Abstract $request )
{
$this->getResponse()->append(’footer’, $this->view->render(’footer.phtml’,null,true));
}
}
Para poder instalarlo solo debemos realizarlo de la siguiente manera:
en el archivo index.php:
/*
* cargo las dependencias, si ya están cargadas esto se quita
*/
Zend_Loader::loadClass(’Zend_Controller_Plugin_Abstract’);
Zend_Loader::loadClass(’Zend_Controller_Request_Abstract’);
Zend_Loader::loadClass(’Zend_Controller_Router_Rewrite’);
Zend_Loader::loadClass(’Zend_Controller_Front’);
Zend_Loader::loadClass(’Zend_View’);
/*
* cargo mi plugin, esto depende de donde lo tengamos,
* en mi caso está en:
* /root/library/Mypluggin/Headerfooterview.php
*/
Zend_Loader::loadFile(’Headerfooterview.php’, ‘./library/Mypluggin’);
/*
* declaro el controlador
*/
$frontController = Zend_Controller_Front::getInstance();
$frontController->throwExceptions(true);
$frontController->addModuleDirectory(’./application/modules/’);
/*
* añado el plugin a nuestro controlador
*/
$frontController->setRouter(new Zend_Controller_Router_Rewrite());
$frontController->registerPlugin(new Headerfooterview());
/*
* inicio el controlador
*/
try {
$frontController->dispatch();
} catch (Exception $e) {
echo “Message: ” . $e->getMessage() . “\n”;
}
Con este plugin todos nuestros archivos .phtml incluiran por defecto un archivo header.phtml al principio y un footer.phtml al final; Ahoralo suyo sería poder crear excepciones, ya que puede darse el caso de alguna página que no lleve el mismo header.phtml que los demás
Sin comentarios
No comments yet
Leave a reply