Domanda

Sono in procinto di fare il mio file bootstrap.php più organizzata, ma dopo che ho messo tutto in metodi statici separati, non posso caricare qualsiasi pagina, al di là del controller di indice. Per esempio. se provo ad aprire

http://localhost/zftutorial/login/index

ho

    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 nel mio file di bootstrap mi sembra di aver definito in cui chould essere trovati controllori:

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

}

Forse ha a che fare qualcosa con il routing, ma la mia app ha funzionato benissimo con il routing implicita prima, ad esempio, altri controllori hanno lavorato bene. Qual è la fonte di errore di cui sopra? Come faccio a testare / trovare / risolvere il problema?

È stato utile?

Soluzione

Guardando il tuo stack di tracciare l'errore è classe controller non valido ( "Login_IndexController")

Questo suggerisce che la Login_IndexController classe non esiste.

Si dovrebbe avere un file chiamato IndexController.php nella directory di controllo del modulo di login. La struttura si ha in questo momento non funzionerà perché due moduli non possono avere un controller con lo stesso nome. Modificare la struttura 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 l'IndexController.php in self :: $ radice. ' ../Application/modules/login/controllers e assicurarsi che la classe si chiama Login_IndexController

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top