“Não módulo padrão definido” erro no aplicativo Zend Framework
-
06-09-2019 - |
Pergunta
Eu estou no processo de fazer o meu arquivo bootstrap.php mais organizado, mas depois que eu colocar tudo em métodos estáticos separados, eu não posso carregar qualquer página além do controlador de índice. Por exemplo. se eu tentar abrir
http://localhost/zftutorial/login/index
I get
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
e no meu arquivo de inicialização I parecem ter definido onde os controladores chould ser encontrada:
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);
}
Talvez tenha que fazer algo com o encaminhamento, mas meu aplicativo funcionou bem com roteamento implícito antes, por exemplo, outros controladores funcionou bem também. Qual é a fonte de erro acima? Como posso test / encontrar / corrigi-lo?
Solução
Olhando para o seu rastreamento de pilha do erro é classe do controlador inválido ( "Login_IndexController")
Isto sugere que o Login_IndexController classe não existe.
Você deve ter um arquivo chamado IndexController.php no diretório controlador do módulo de login. A estrutura que você tem no momento não vai funcionar porque dois módulos não pode ter um controlador com o mesmo nome. Alterar a estrutura para
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'
)
);
Criar a IndexController.php em self :: $ raiz. ' ../Application/modules/login/controllers e certifique-se a classe é chamada Login_IndexController