ZF-11645: Error when set dispatch on front controller


When I attempt set the dispatcher on my bootstrap file, the system generate an exception.


class My_Dispatcher extends Zend_Controller_Dispatcher_Standard
class My_Bootstrap extends Zend_Application_Bootstrap_Bootstrap
    public function _initMyFrontController()
        $frontController = $this->getResource('frontController');
        $frontController->setDispatcher(new My_Dispatcher());
        return $frontController;


Fatal error: Uncaught exception 'Zend_Application_Bootstrap_Exception' with message 'No default controller directory registered with front controller' in /home/jpfaria/public/apps/MenuTabletAdmin/library/Zend/Application/Bootstrap/Bootstrap.php:91 Stack trace: #0 /home/jpfaria/public/apps/MenuTabletAdmin/library/Zend/Application.php(366): Zend_Application_Bootstrap_Bootstrap->run() #1 /home/jpfaria/public/apps/MenuTabletAdmin/public/index.php(25): Zend_Application->run() #2 {main} thrown in /home/jpfaria/public/apps/MenuTabletAdmin/library/Zend/Application/Bootstrap/Bootstrap.php on line 91


It looks to me like you're missing a directive in your configuration -- in INI format, this:

resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"

Also, you're not naming your bootstrap "Bootstrap" (no namespace), so you'll need to tell Zend_Application the bootstrap class name as well:

bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "My_Bootstrap"

If those are already in your configuration, can you provide your full configuration, as well as the contents of your public/index.php file, please?

Thank you for your quick post.

All settings are being passed perfectly. The proof of this is that if I modify the method getDispatcher of FrontController to:

public function getDispatcher()
         * Instantiate the default dispatcher if one was not set.
        if (!$this->_dispatcher instanceof Zend_Controller_Dispatcher_Interface) {
            require_once 'My/Dispatcher.php';
            $this->_dispatcher = new My_Dispatcher();
        return $this->_dispatcher;

Works perfectly.