Указан неверный контроллер - Zend Framework - PullRequest
1 голос
/ 31 марта 2011

Да, я уже посещал форумы и пытался устранить ошибку. Пожалуйста, мне действительно нужно немного помочь здесь.

Всякий раз, когда я пытаюсь получить доступ к http://domain.com/dashboard/index/index/

Я получаю сообщение об ошибке Invalid controller class ("Dashboard_IndexController")

В моем приложении есть два модуля Main (по умолчанию) и Dashboard

My Application.ini

[bootstrap]
autoloadernamespaces[] = "Zend_"
autoloadernamespaces[] = "WOW_"

phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"

bootstrap.class = "Bootstrap"

resources.frontcontroller.moduledirectory = APPLICATION_PATH"/modules"
resources.frontcontroller.defaultmodule = "main"
resources.frontcontroller.params.prefixDefaultModule = true

resources.frontController.params.displayExceptions = 0
resources.frontcontroller.throwerrors = false

resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"
resources.layout.layout =  "main"

resources.view[] =

resources.modules[] =

Bootstrap.php

<?php

    class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
    {

        protected $_logger;


        protected $_resourceLoader;


        public $frontController;

        protected function _initLogging()
        {
             $this->bootstrap('frontController');
    //       $this->frontController = $this->getResource('frontController');
            $logger = new Zend_Log();

            $writer = 'production' == $this->getEnvironment() ?
                new Zend_Log_Writer_Stream(APPLICATION_PATH . '/../data/logs/app.log') :
                new Zend_Log_Writer_Firebug();
            $logger->addWriter($writer);


                $filter = new Zend_Log_Filter_Priority(Zend_Log::CRIT);
                $logger->addFilter($filter);


            $this->_logger = $logger;
            Zend_Registry::set('log', $logger);
        }
        protected function _initDoctype()
        {
            $this->bootstrap('view');
            $view = $this->getResource('view');
            $view->doctype('XHTML1_STRICT');
        }


        protected function _initDbProfiler()
        {
            $this->_logger->info('Bootstrap ' . __METHOD__);

            if ('production' !== $this->getEnvironment()) {
                $this->bootstrap('db');
                $profiler = new Zend_Db_Profiler_Firebug('All DB Queries');
                $profiler->setEnabled(true);
                $this->getPluginResource('db')->getDbAdapter()->setProfiler($profiler);
            }
        }


        protected function _initConfig()
        {
            $this->_logger->info('Bootstrap ' . __METHOD__);
            Zend_Registry::set('config', $this->getOptions());
        }


        protected function _initRoutes()
        {

            $this->_logger->info('Bootstrap ' . __METHOD__);
            $this->bootstrap('frontController');

            $router = $this->frontController->getRouter();

            // Admin context route
            $route = new Zend_Controller_Router_Route(
                'dashboard',
                array(
                    'action'     => 'index',
                    'controller' => 'index',
                    'module'     => 'dashboard',
                    'isAdmin'    => true
                )
            );

            $router->addRoute('dashboard', $route);


        }


        protected function _initDefaultModuleAutoloader()
        {
            $this->_logger->info('Bootstrap ' . __METHOD__);

            $this->_resourceLoader = new Zend_Application_Module_Autoloader(array(
                'namespace' => 'Main',
                'basePath'  => APPLICATION_PATH . '/modules/main',
            ));
            $this->_resourceLoader->addResourceTypes(array(
                'modelResource' => array(
                  'path'      => 'models/resources',
                  'namespace' => 'Resource',
                ),

                'form' => array(
                        'path' => 'forms',
                        'namespace' => 'Form',
                   ),

                'service' => array(
                        'path' => 'services',
                        'namespace' => 'Service',
                        ),

            ));
            /*
             $this->frontController->setControllerDirectory(array(
                    'default' => APPLICATION_PATH .'/modules/main/controllers',
                    'dashboard' => APPLICATION_PATH .'/modules/dashboard/controllers',

            ));
              yeah I tried this too....
            */

        }
        /**
         * function autoloads the different modules 
         */

        protected function _initModuleLoader()
        {
            $this->_logger->info('Bootstrap ' . __METHOD__);

            $this->_resourceLoader = new Zend_Application_Module_Autoloader(array(
                'namespace' => 'Dashboard',
                'basePath'  => APPLICATION_PATH . '/modules/dashboard',
            ));
            $this->_resourceLoader->addResourceTypes(array(
                'modelResource' => array(
                  'path'      => 'models/resources',
                  'namespace' => 'Resource',
                ),

                /*
                'form' => array(
                        'path' => 'form',
                        'namespace' => 'Form',
                   ),

                'service' => array(
                        'path' => 'services',
                        'namespace' => 'Service',
                        ),
               */
            ));

        }


         /**
         * Add Controller Action Helpers
         */
        protected function _initActionHelpers()
        {
            $this->_logger->info('Bootstrap ' . __METHOD__);
           // Zend_Controller_Action_HelperBroker::addHelper(new WOW_Controller_Helper_Acl());
           // Zend_Controller_Action_HelperBroker::addHelper(new SF_Controller_Helper_RedirectCommon());
            // Zend_Controller_Action_HelperBroker::addHelper(new SF_Controller_Helper_Service());
        }

    }

Любая идея. Спасибо за вашу поддержку

Хорошо, ребята, я позаботился об этом. Это некоторая проблема пути во время загрузки

Ответы [ 2 ]

1 голос
/ 31 марта 2011

Вы указали пространство имен Dashboard в:

    $this->_resourceLoader = new Zend_Application_Module_Autoloader(array(
        'namespace' => 'Dashboard',
        'basePath'  => APPLICATION_PATH . '/modules/dashboard',
    ));

Таким образом, оно добавит Dashboard ко ВСЕМ классам, которые вы пытаетесь вызвать.Поэтому измените пространство имен на пустую строку и оставьте только один вызов Zend_Application_Module_Autoloader.Я делаю это следующим образом:

protected function _initModule() {
    $loader = new Zend_Application_Module_Autoloader(array(
        'namespace' => '',
        'basePath' => APPLICATION_PATH,
    ));
    return $loader;
}

И это все!

0 голосов
/ 01 июля 2011

Или вы можете сделать это в INI-файле.

;custom name space

autoloaderNamespaces [] = "Zfcms _"

autoloaderNamespaces [] = "App _"

autoloaderNamespaces [] = "Пользовательский _"

index.php:

// Define path to application directory

определено ('APPLICATION_PATH') ||define ('APPLICATION_PATH', realpath (dirname ( FILE ). '/../application'));

// Определить определенную среду приложения (' APPLICATION_ENV ') ||define ('APPLICATION_ENV', (getenv ('APPLICATION_ENV'))? getenv ('APPLICATION_ENV'): 'production'));

// Убедитесь, что библиотека / находится в include_path set_include_path (implode (PATH_SEPARATOR, массив (realpath)(APPLICATION_PATH. '/../Library'), get_include_path (),)));

/ ** Zend_Application * / require_once 'Zend / Application.php';

// Создатьapplication, начальная загрузка и запуск $ application = new Zend_Application (APPLICATION_ENV, APPLICATION_PATH. '/configs/application.ini');$ application-> bootstrap () -> run ();

...