Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
Voici mon problème, je suis en train de développer un site/cms qui construit la navigation (menu, ...) automatiquement depuis la base de données. J'ai également un fichier .ini contenant toutes les routes possibles. J'utilise la traduction de controller également. Le menu se construit correctement en français et en allemand avec les bonnes url.
EX: partie du fichier routes.ini
.....
; Contact - /fr/contact or /de/kontakt
routes.contact_index.route = ":lang/:@controller"
routes.contact_index.defaults.module = default
routes.contact_index.defaults.controller = contact
routes.contact_index.defaults.action = index
routes.contact_index.reqs.lang = "^(fr|de)$"
; FAQ - /fr/questions or /de/fragen
routes.faq_index.route = ":lang/:@controller"
routes.faq_index.defaults.module = default
routes.faq_index.defaults.controller = faq
routes.faq_index.defaults.action = index
routes.faq_index.reqs.lang = "^(fr|de)$"
; Product index - /fr/produits /de/produkte
routes.product_index.route = ":lang/:@controller"
routes.product_index.defaults.module = default
routes.product_index.defaults.controller = product
routes.product_index.defaults.action = supplierlist
routes.product_index.reqs.lang = "^(fr|de)$"
; Home
routes.home.route = ":lang"
routes.home.defaults.module = default
routes.home.defaults.controller = index
routes.home.defaults.action = index
routes.home.defaults.lang = fr
routes.home.reqs.lang = "^(fr|de)$"
...
Quand j'accède à l'url "/fr/produits" ou "/de/produkte" tout fonctionne correctement!! La page s'affiche en français ou en allemand avec le bon controller, action et locale. (contoller => product, action => supplierlist)
Si maintenant j'accède à "/fr/questions" ou en allemand, j'obtiens l'erreur ci-dessous (supplierlist pas trouvé.. mais c'est normal car cette action appartient à un autre controller, pourquoi prend il pas l'action index??).
Si j'inverse les routes, ca fonctionne maintenant avec "/fr/questions" mais plus avec "/fr/produits" (l'action index du controller product n'est pas utilisée, j'utilise l'action supplierlist)
Pour toutes les routes en dessus de ma routes "product_index", l'action ne change pas et reste sur "supplierlist" alors que le controller lui change... !?
**************************************
An error occurred
Page not found
Exception information:
Message: Action "supplierlist" does not exist and was not trapped in __call()
Stack trace:
#0 /var/www/cms.1234.local/bin/1234cms/library/Zend/Controller/Action.php(518): Zend_Controller_Action->__call('supplierlistAct...', Array)
#1 /var/www/cms.1234.local/bin/1234cms/library/Zend/Controller/Dispatcher/Standard.php(295): Zend_Controller_Action->dispatch('supplierlistAct...')
#2 /var/www/cms.1234.local/bin/1234cms/library/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#3 /var/www/cms.1234.local/bin/1234cms/library/Zend/Application/Bootstrap/Bootstrap.php(97): Zend_Controller_Front->dispatch()
#4 /var/www/cms.1234.local/bin/1234cms/library/Zend/Application.php(366): Zend_Application_Bootstrap_Bootstrap->run()
#5 /var/www/cms.1234.local/bin/1234cms/public/index.php(26): Zend_Application->run()
#6 {main}
Request Parameters:
array (
'lang' => 'fr',
'controller' => 'faq',
'module' => 'default',
'action' => 'supplierlist', <--- FAUX, DOIT ÊTRE "INDEX"
)
**************************************
Je construit la navigation comme ceci, il me semble que c'est correct:
...
$page = new Zend_Navigation_Page_Mvc(array(
'id' => $vo->getSiteNavigationId(),
'label' => $vo->getLabel(),
'title' => $vo->getTitle(),
'route' => $vo->getRoute()
)
);
...
Pourquoi le paramètre action est faux ?
Merci d'avance,
Michael
Dernière modification par MichaelB (28-09-2011 09:48:55)
Hors ligne