Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Je découvre depuis peu le Zend Framework et j'ai une petite question.
J'ai utilisé jusque là l'architecture modulaire proposée par zend :
/application
/module1
/controllers
/views
/module2
/controllers
/views
/module3
/controllers
/views
Maintenant j'aimerai regrouper certains module sous un même répertoire pour avoir l'arborescence suivante
/application
/rep1
/module1
/controllers
/views
/module2
/controllers
/views
/rep2
/module3
/controllers
/views
...
et ainsi pouvoir accéder à ces modules par http://localhost/rep1/module1/controller/action
Pour cela j'ai ajouté les repertoires contenant les modules :
$frontController->addModuleDirectory('./application/rep1');
$frontController->addModuleDirectory('./application/rep2');
Avec ça j'arrivetoujours à accéder au module directement par http://localhost/module1/controller/action
J'espèrais pouvoir arrivée à mes fins en ajoutant une route :
$router->addRoute('rep1', new Zend_Controller_Router_Route('rep1/:module/:controller/:action/*'));
Avec cela j'arrive toujours à atteindre mes modules par l'url http://localhost/module1/controller/action
mais avec l'url http://localhost/rep1/module1/controller/action il me sort l'erreur suivante :
Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (module1)'
Quelqu'un aurait-il une idée ?
Merci d'avance
Hors ligne
non tu peux choisir l'arborescence de ton choix pour placer tes modules
mais les url elle sont toujours /baseUrl/Module/Controleur/Action/ParamName/ParamValue
mais tu n'est pas obligé d'avoir les mêmes nom de module dans l'url et dans le dossier
/baseUrl/Module/Controleur/Action/ParamName/ParamValue peut très bien être dans
/Rep1/Module25/Controleurs
j'ai moi
/
/app
/controllers
/module1
/controllers
/module2
/controllers
/genericmodules
/module1
/controllers
/module2
/controllers
/lib
A+JYT
Hors ligne
Merci pour ta réponse
En fait j'ai réussi à faire ce que je voulais :
Je remplace
$router->addRoute('rep1', new Zend_Controller_Router_Route('rep1/:module/:controller/:action/*'));
par ce bout de code :
$frontController->addModuleDirectory('./application/rep1');
$route = new Zend_Controller_Router_Route(
'rep1/:module',
array(
'module' => 'defaultmodule',
)
);
$router->addRoute('accueil', $route);
Du coup j'accède bien à mon module par l'url http://localhost/rep1/module1/
Et ça me permet d'avoir un module par défaut pour l'url http://localhost/rep1
Comme quoi il suffit de poser la question pour trouver soi même la réponse ;-)
Philippe
Hors ligne
Pages: 1