Search code examples
phpzend-framework

How can I access the configuration of a Zend Framework application from a controller?


I have a Zend Framework application based on the quick-start setup.

I've gotten the demos working and am now at the point of instantiating a new model class to do some real work. In my controller I want to pass a configuration parameter (specified in the application.ini) to my model constructor, something like this:

class My_UserController extends Zend_Controller_Action
{
    public function indexAction()
    {
        $options = $this->getFrontController()->getParam('bootstrap')->getApplication()->getOptions();
        $manager = new My_Model_Manager($options['my']);
        $this->view->items = $manager->getItems();
    }
}

The example above does allow access to the options, but seems extremely round-about. Is there a better way to access the configuration?


Solution

  • I always add the following init-method to my bootstrap to pass the configuration into the registry.

    protected function _initConfig()
    {
        $config = new Zend_Config($this->getOptions(), true);
        Zend_Registry::set('config', $config);
        return $config;
    }
    

    This will shorten your code a little bit:

    class My_UserController extends Zend_Controller_Action
    {
        public function indexAction()
        {
            $manager = new My_Model_Manager(Zend_Registry::get('config')->my);
            $this->view->items = $manager->getItems();
        }
    }