Zend_Application will read the data in your application.ini and make it available from your bootstrap's getOptions() method. It then sets the bootstrap as a parameter in the front controller. Note that the top level keys are all normalised to lowercase too.
You can then retrieve the options in a number of ways.
In the controller you can do this:
public function someAction()
{
$bootstrap = $this->getInvokeArg('bootstrap');
$options = $bootstrap->getOptions();
}
Outside of the controller you can do this:
$bootstrap = Zend_Controller_Front::getInstance()->getParam('bootstrap');
$options = $bootstrap->getOptions();
One downside is that $options is a nested array, and not a Zend_Config object. If you prefer to work with a Zend_Config object you need to create it yourself as Zend_Application discards the one it creates. The easiest way to do this is to create a new method in your bootstrap to create the Zend_Config object and store to the registry.
protected function _initConfig()
{
$config = new Zend_Config($this->getOptions());
Zend_Registry::set('config', $config);
return $config;
}
You can then get at your config data wherever you need it. Try not to depend too much on Zend_Registry keys though, as it can make testing harder.



November 27th, 2009 at 17:05 #
I used the same way to make my config available. I also set the db adapter in Zend_Registry.
Regards
Tobi
November 28th, 2009 at 09:59 #
Thanks for this is solution
November 30th, 2009 at 15:37 #
Rob,
Thanks I was just looking for how to get access to the options in a view helper with out using Zend_Registry.
Thanks!
November 30th, 2009 at 15:38 #
You have one two many ')' on your second example.
November 30th, 2009 at 15:41 #
Thanks Jon,
Fixed :)
Rob...
December 4th, 2009 at 07:36 #
Hello
Thanks for your post.
Help me. How to access database ressources in application.ini and write to Zend_Registry ?
Thanks a lot
December 6th, 2009 at 10:05 #
bin,
protected function _initDatabaseRegistry()
{
$this->bootstrap("db");
$db = $this->getResource("db");
Zend_Registry::set('db', $db);
return $db;
}
Regards,
Rob...
December 20th, 2009 at 01:42 #
Note that you can actually combine bootstrap's registry with zend registry (why having duplicates ?)
protected function _initRegistry() { $this->setContainer(Zend_Registry::getInstance());
}
February 8th, 2010 at 12:03 #
Hi Rob,
Thanks for this, it really helped!
Bookmarked...
March 30th, 2010 at 15:14 #
And what about module configuration? Can we have /mymodule/configs/config.ini in which we can put the same options as in application.ini? e.g. resources.session., resources.mail. etc.
September 10th, 2010 at 20:45 #
Why do you return stuff from _initXXX() methods?
I've seen it done in Zend's own documentation but haven't seen anything actually use those return values. Does that come into play in unit testing, maybe?
September 10th, 2010 at 20:50 #
Picha,
when you return something from an _initXX(), it becomes available in the bootstrap for use later.
Regards,
Rob...
July 21st, 2011 at 19:31 #
Thanks for this Rob. I tried the bootstrap approach and it worked like a charm.
August 24th, 2011 at 23:49 #
Thanks for that nice bootstrap snippet!