Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous,
j'essaie de faire en sorte sur un site Web que les adresses actuelles pointent vers les controller de Zend Framework.
Mais impossible, rien que le BABA :
http://localhost/monsite/rep/index.html
Dans mon fichier config.ini :
routes.dir.type = "Zend_Controller_Router_Route_Static"
routes.dir.route = "index.html"
routes.dir.defaults.module = "default"
routes.dir.defaults.controller = "rep"
routes.dir.defaults.action = "index"
dans le bootstrap :
$router = $frontController->getRouter();
$router->addConfig($config, 'routes');
$frontController->setRouter($router);
La j'ai l'erreur :
Action "indexHtml" does not exist and was not trapped in __call()
De même pour une redirection avec des paramètres :
dir.type = "Zend_Controller_Router_Route_Regex"
dir.route = "rep/(\d+),(.+)\.html'"
dir.defaults.module = "default"
dir.defaults.controller = "rep"
dir.defaults.action = "index"
dir.map.1 = "category"
dir.map.2 = "id"
dir.reverse = "rep/%d,%s.html"
mais j'ai toujours la même erreur :
action pouet347Html does not exist and was not trapped in __call()
Quelqu'un a -til une idée ? j'ai dû rater quelque chose.
Merci,
Dernière modification par Cidrolin (17-11-2008 15:15:32)
Hors ligne
C'est quoi la baseUrl de ton site ??
Car si c'est http://localhost/monsite/, c'est normal que la route ne soit pas reconnue car c'est
http://localhost/monsite/index.html qui est attendu.
Hors ligne
effectivement je suis en localhost et c'est dans un sous-dossier "site" ?
Hors ligne
dans ce cas
routes.dir.route = "rep/index.html"
La route doit correspondre à tous les chemin sans la base (il faut biensur configurer la base dans le ZF)
Ou alors, si tu garde
routes.dir.route = "index.html"
tu y accède via http://localhost/monsite/index.html
Hors ligne
Salut,
merci pour ta réponse.
Mais j'ai l'impression que c'est uniquement le . qui pose probleme, car quand je mets :
$route = new Zend_Controller_Router_Route_Static(
'rep/indexhtml',
array(
'controller' => 'rep',
'action' => 'index'
),
'/rep/indexhtml'
);
$router->addRoute('route', $route);
il me renvoie bien vers "rep/index"
Et là ça merdouille :
$route = new Zend_Controller_Router_Route_Static(
'rep/index\.html',
array(
'controller' => 'rep',
'action' => 'index'
),
'/rep/index.html'
);
$router->addRoute('route', $route);
Merci
Hors ligne
Je viens de tester ceci :
routes.users.type = "Zend_Controller_Router_Route_Static" routes.users.route = "users.html" routes.users.defaults.module = "user" routes.users.defaults.controller = "index" routes.users.defaults.action = "index"
Sachant que ma base est 'monsite' (donc enregistré via $frontController->setBaseUrl('/monsite'))
lorsque je tape d'url http://localhost/monsite/users.html
ca fonctionne chez moi, pas de problème de ., il apelle bien le module/controller/action qui correpond
Si je me réfère que as ton erreur plus haut (..was not trapped in __call), ca veut dire (enfin je crois) que ta route n'a pas été reconnu et que donc, c'est la route par défaut qui est utilisé (a savoir /controller/action ou /module/controller/action) et biensur ce qui est dans l'url n'est pas une action qui existe (tu n'as pas codé indexHtmlAction)
Donc, si on parle sur une non reconnaissance de route, je pense qu'il y a confusion sur des elements de route.
Notamment la base
Es tu sur que ta base est bien réglée ?
As tu vraiment une base ? (je veux dire, 'monsite' n'est pas un module ??)
Hors ligne
Ok je comprends mieux.
Merci, à présent cela marche bien pour un index.html tout simple.
par contre si je veux intégrer des paramètres, genre :
http://localhost/monsite/rep/titrenews,28.html
il me nettoie encore la virgule et le point.
Pourtant, je fais :
routes.maroute.type = "Zend_Controller_Router_Route_Regex"
routes.maroute.route = "rep/(\d+),(.+)\.html'"
routes.maroute.defaults.module = "default"
routes.maroute.defaults.controller = "rep"
routes.maroute.defaults.action = "index"
routes.maroute.map.1 = "id"
routes.maroute.reverse = "rep/%d,%s.html"
Alors je ne sais pas si je dois addslashiser les , et les . J'ai beau faire l'un ou l'autre, ça me renvoie toujours l'erreur :
Action "salut18Html" does not exist and was not trapped in __call()
Et même après avoir défini la base.
Hors ligne
C'est bon, j'ai rien dit !!
C'est de ma faute, j'ai mal géré les regex
Tout marche bien, vraiment merci à toi pour avoir répondu si vite à chaque fois!
Hors ligne
ok, donc, il ne reconnait pas ta route.
1/ soit tu as toujours un problème de base (mais apparement c'est réglé)
2/ ta regex n'est pas correcte.
Tu n'as pas mappé ton 2eme paramètre (le deuxième groupe de parenthèse), je ne sais pas si ca peut gêner => a tester
Le . doit être inhiber oui, mais pas la virgule
Et pour donner une reponse: pour moi, ta regex n'est pas bonne du tout
rep/(\d+),(.+)\.html
ne match pas avec
rep/titrenews,28.html
moi, je verrais plutot ca :
rep/titrenews,(\d+)\.html
voir ca :
rep/(.+),(\d+)\.html
(ne pas oublié de mapper 1 avec 'action' et 2 avec 'id')
Je ne sais pas si tu comprends je suis pas pédagogue
Hors ligne
oops.. j'ai été trop long à répondre
bon courage !
Hors ligne