“Nessun modulo default definito” errore di Zend Framework app
-
06-09-2019 - |
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?
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