Comportamento del Default Router

Salve a tutti. Sto cercando di rendere modulare la mia applicazione realizzata con ZF.

Passo da una struttura di questo tipo

[tt]

application/

configs/

controllers/

layouts/

models/

views/

languages/

library/

public/

[/tt]

ad una struttura di questo tipo

[tt]

application/

configs/

controllers/

layouts/

models/

views/

modules/

admin/

controllers/

models/

views/

languages/

library/

public/

[/tt]

Il problema che il default router non gestisce i moduli, nonostante sulla documentazione (paragrafo "Routing to Modules") sia indicato il contrario.

Se passo l'url http://myapplication.local/admin/ mi restituisce il seguente errore: Invalid controller specified (admin)

[tt]

Traccia dello stack:

#0 /usr/share/php/libzend-framework-php/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))

#1 /usr/share/php/libzend-framework-php/Zend/Application/Bootstrap/Bootstrap.php(97): Zend_Controller_Front->dispatch()

#2 /usr/share/php/libzend-framework-php/Zend/Application.php(366): Zend_Application_Bootstrap_Bootstrap->run()

#3 /var/www/myapplication/public/index.php(26): Zend_Application->run()

#4 {main}

Parametri della richiesta:

array (

'controller' => 'admin',

'action' => 'index',

'module' => 'default',

)[/tt]

Stresso sul fatto che sui parametri della richiesta vi sia indicato il modulo di default.

Come mai questo comportamento?

Grazie e scusatemi :)

EDIT: Dimenticavo il codice del Bootstrap.php

[tt]

protected function _initModules(){

$front = Zend_Controller_Front::getInstance();

$front->addControllerDirectory(APPLICATION_PATH . '/modules/admin/controllers','admin');

$front->addModuleDirectory(APPLICATION_PATH . '/modules');

}[/tt]

inviato 5 anni fa
FollowTheMedia
modificato 5 anni fa
X 0 X

L'alberatura riportata nella documentazione ufficiale differente:

http://framework.zend.com/manual/en/zend.controller.modular.html

I diversi moduli sono all'interno della cartella application

:bye:

risposto 5 anni fa
Gianni Tomasicchio
X 0 X

L'alberatura riportata nella documentazione ufficiale differente:

http://framework.zend.com/manual/en/zend.controller.modular.html

I diversi moduli sono all'interno della cartella application

:bye:

Oddio scusa, ho sbagliato a riportare l'alberatura. La cartella modules effettivamente dentro ad application.

Adesso modifico il post.

EDIT: Non posso pi modificarlo. Riporto l'alberatura corretta qui di seguito.

da

[tt]

application/

configs/

controllers/

layouts/

models/

views/

languages/

library/

public/

[/tt]

ad una struttura di questo tipo

[tt]

application/

configs/

controllers/

layouts/

models/

views/

modules/

admin/

controllers/

models/

views/

languages/

library/

public/

[/tt]

A rigor di logica per, una volta che passo al front controller il path sia del modulo, che dei controller del modulo, la struttura dei file non dovrebbe influire. Ad ogni modo io uso quella standard, avevo semplicemente sbagliato a riportarla.

risposto 5 anni fa
FollowTheMedia
modificato 5 anni fa
X 0 X

Hai aggiunto il namespace al nome dei controller del modulo admin?

risposto 5 anni fa
Gianni Tomasicchio
X 0 X

S, la classe si chiama Admin_IndexController ed estende Zend_Controller_Action

Il file si chiama IndexController.php

[tt]application/

configs/

controllers/

layouts/

models/

views/

modules/

admin/

controllers/

IndexController.php [class Admin_IndexController extends Zend_Controller_Action]

models/

views/

languages/

library/

public/[/tt]

Ho provato (nel caso... anche se inutile) a rinominare il file in Admin_IndexController.php, ma non cambia nulla.

risposto 5 anni fa
FollowTheMedia
modificato 5 anni fa
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda