Question

Je suis en train de faire mon dossier bootstrap.php plus organisé, mais après que je mets tout dans les méthodes statiques séparés, je ne peux pas charger une page au-delà de contrôleur d'index. Par exemple. si je tente d'ouvrir

http://localhost/zftutorial/login/index

Je reçois

    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

et dans mon dossier bootstrap me semble avoir défini où les contrôleurs chould se trouvent:

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);

}

Peut-être qu'il doit faire quelque chose avec le routage, mais mon application a bien fonctionné avec le routage implicite avant, par exemple d'autres contrôleurs ont bien fonctionné aussi. Quelle est la source d'erreur ci-dessus? Comment puis-je tester / trouver / fixer?

Était-ce utile?

La solution

En regardant votre pile trace l'erreur est classe contrôleur non valide ( "Login_IndexController")

Ceci suggère que la Login_IndexController de classe n'existe pas.

Vous devriez avoir un fichier appelé IndexController.php dans le répertoire du contrôleur du module de connexion. La structure que vous avez à l'heure actuelle ne fonctionnera pas parce que deux modules ne peuvent pas avoir un contrôleur avec le même nom. Modifier la structure à

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'
        )
    );

Créer le IndexController.php dans l'auto :: $ root. » ../Application/modules/login/controllers et assurez-vous que la classe est appelée Login_IndexController

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top