July 28, 2010 | In: php, zend framework
Es la primera vez que uso Zend_Application y ando un poco perdido.
Estoy haciendo un plugin ( Zend_Controller_Plugin ) y hay una variable que necesito tener en el archivo de configuración (declarado en Zend_Application). El problema lo tengo a la hora de accedes ésta desde el Plugin.
La única posibilidad que he visto es declarar el config con Zend_Registre desde el Bootstrap; pero para ello estoy obligado a hacerlo cada vez en cada proyecto y me parece un poco “raro”:
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
protected function _initConfig()
{
$config = new Zend_Config($this->getOptions(), true);
Zend_Registry::set('config', $config);
return $config;
}
....
Otra manera, más fea, es re-declarar el config file desde el plugin; pero estaría en la misma porque tendría que poner la ruta del file.
Alguna idea?
Por fin he encontrado la solución. He podido obtener config del bootstrap a través del controlador; es un poco engorroso pero al final el código es muy cortito:
class myPlugin extends Zend_Controller_Plugin_Abstract
{
public function routeShutdown($request)
{
//optenemos la instancia del Zend_Application_Bootstrap
$bootstrap = Zend_Controller_Front::getInstance()
->getParam('bootstrap');
//Ahora si que tenemos acceso al archivo de configuración (application.ini)
$config = $bootstrap->getOptions();
var_dump($config)
}
....
}
Al final resultó basante sencillo, aunque ahora tengo que averiguar con que nombre se le ha instanciado el plugin y utilizar ese mismo para la configuración; ejemplo:
resources.frontController.plugins.namePlugin = "ClassPlugin" namePlugin.options.optionA = 1
resources.frontController.plugins.otherNamePlugin = "ClassPlugin" otherNamePlugin.options.optionA = 1