Estoy aprendiendo zend y me tope con un problema que luego de buscar y buscar no logre resolver.
Bootstrap:
Código PHP:
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
protected function _initAutoload()
{
//Registro el plugin que verifica si el usuario esta logeado
$fc = Zend_Controller_Front::getInstance();
$fc->registerPlugin(Plugin_CheckAccess::getInstance());
}
protected function _initNavigation()
{
$this->bootstrap('layout');
$config = $this->getOptions();
$layout = $this->getResource('layout');
$view = $layout->getView();
$confignav = new Zend_Config_Xml(APPLICATION_PATH . '/configs/navegacion.xml', 'nav');
$container = new Zend_Navigation($confignav);
$view->navigation($container);
}
protected function _initDoctype()
{
$this->bootstrap('view');
$view = $this->getResource('view');
$view->doctype('XHTML1_TRANSITIONAL');
$view->addHelperPath(APPLICATION_PATH . '/views/helpers', 'My_View_Helper');
}
}
Layout
Código PHP:
<?php echo $this->render('header.phtml') ?>
<?php echo $this->navigation()->menu(); ?>
<?php echo $this->layout()->content; ?>
Antes de agregar el menu, tenia un view helper que me mostraba cierta info dependiendo si el usuario esta o no logueado.
Este helper esta en
application
-->views
--> helpers
-->Login.php
Desde el layout lo llamaba de la siguiente manera
Código PHP:
<?php echo $this->Login(); ?>
Ahora cuando agregue el nav que les mostre al principio me sale el siguiente error:
Fatal error: Uncaught exception 'Zend_Loader_PluginLoader_Exception' with message 'Plugin by name 'Login' was not found in the registry; used paths: Zend_View_Helper_: Zend/View/Helper/:./views/helpers/' in /home/calidad/www/proyecto/library/Zend/Loader/PluginLoader.php:412 Stack trace: #0 /home/calidad/www/proyecto/library/Zend/View/Abstract.php(1174): Zend_Loader_PluginLoader->load('Login') #1 /home/calidad/www/proyecto/library/Zend/View/Abstract.php(610): Zend_View_Abstract->_getPlugin('helper', 'Login') #2 /home/calidad/www/proyecto/library/Zend/View/Abstract.php(336): Zend_View_Abstract->getHelper('Login') #3 [internal function]: Zend_View_Abstract->__call('Login', Array) #4 /home/calidad/www/proyecto/application/layouts/scripts/layout.phtml(27): Zend_View->Login() #5 /home/calidad/www/proyecto/library/Zend/View.php(108): include('/home/calidad/w...') #6 /home/calidad/www/proyecto/library/Zend/View/Abstract.php(880): Zend_View->_run('/home/calidad/w...') #7 /home/calidad/www/proyecto/library/Zend/Layout.php(796): Zen in /home/calidad/www/proyecto/library/Zend/Loader/PluginLoader.php on line 412
Ahora si en el bootstrap comento la siguiente linea el error no aparece
Código PHP:
$view = $layout->getView();
Código PHP:
<?php echo $this->Login(); ?>
Es decir o me funciona una cosa o me funciona la otra
En el application.ini tambien probe agregar el path a los view helper de la siguiente manera:
resources.view.helperPath.My_View_Helper = APPLICATION_PATH "/views/helpers"
Espero pueda ayudarme!
Desde ya muchas gracias
Cristian