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?

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top