“No hay ningún módulo por defecto definido” error en Zend Framework de aplicaciones

StackOverflow https://stackoverflow.com/questions/733120

  •  06-09-2019
  •  | 
  •  

Pregunta

Estoy en proceso de hacer mi archivo Bootstrap.php más organizada, pero después de poner todo en métodos estáticos separados, no puedo cargar cualquier página más allá de controlador de índice. P.ej. si intento abrir

http://localhost/zftutorial/login/index

consigo

    Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 
'Invalid controller class ("Login_IndexController")' in C:\Program 
Files\VertrigoServ\www\library\Zend\library\Zend\Controller\Dispatcher\Standard.php:341 
Stack trace: #0 C:\Program 
Files\VertrigoServ\www\library\Zend\library\Zend\Controller\Dispatcher\Standard.php(255): 
Zend_Controller_Dispatcher_Standard->loadClass('IndexController') #1 C:\Program 
Files\VertrigoServ\www\library\Zend\library\Zend\Controller\Front.php(934): 
Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), 
Object(Zend_Controller_Response_Http)) #2 C:\Program 
Files\VertrigoServ\www\zftutorial\public\index.php(18): Zend_Controller_Front->dispatch() 
#3 C:\Program Files\VertrigoServ\www\zftutorial\public\index.php(138): Bootstrap::run() #4
 {main} thrown in C:\Program 
Files\VertrigoServ\www\library\Zend\library\Zend\Controller\Dispatcher\Standard.php on 
line 341

y en mi archivo de arranque parece que he definido, donde se encuentran los controladores chould:

public static function setupFrontController()
{
    self::$frontController = Zend_Controller_Front::getInstance();
    self::$frontController->throwExceptions(true);
    self::$frontController->returnResponse(true);
    self::$frontController->setBaseUrl('/zftutorial');

    self::$frontController->setControllerDirectory(
        array(
            'default' => self::$root . '../application/controllers',
            'admin' => self::$root . '../application/controllers',
            'index' => self::$root . '../application/controllers',
            'login' => self::$root . '../application/controllers',
            'user' => self::$root . '../application/controllers'
        )
    );

    self::$frontController->setParam('registry', self::$registry);

}

Tal vez lo que tiene que hacer algo con el enrutamiento, pero mi aplicación funcionó bien con el enrutamiento implícita antes, por ejemplo, otros controladores también funcionaba bien. ¿Cuál es la fuente de error anterior? ¿Cómo puedo probar / encuentro / solucionarlo?

¿Fue útil?

Solución

En cuanto a su pila rastrear el error es clase controlador no válida ( "Login_IndexController")

Esto sugiere que el Login_IndexController clase no existe.

Usted debe tener un archivo llamado IndexController.php en el directorio del controlador del módulo de inicio de sesión. La estructura que tiene en este momento no funcionará porque dos módulos no pueden tener un controlador con el mismo nombre. Cambiar la estructura a

self::$frontController->setControllerDirectory(
        array(
            'default' => self::$root . '../application/modules/default/controllers',
            'admin' => self::$root . '../application/modules/admin/controllers',
            'index' => self::$root . '../application/modules/index/controllers',
            'login' => self::$root . '../application/modules/login/controllers',
            'user' => self::$root . '../application/modules/user/controllers'
        )
    );

Crea el IndexController.php en self :: $ raíz. ' ../Application/modules/login/controllers y asegurarse de que la clase se llama Login_IndexController

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top