Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
j'ai un souci avec mon routing.
J'ai un lien qui utilise le helper url pour définir la route du lien :
[lang=php] <a href="<?php echo $this->url('home', array('action' => 'supprimer', 'nom' => $commande['nom_pizza'])); ?>" title="supprimer" class="delete_commande fam-delete"></a>
Donc je demande à mon lien de pointer vers la route "home", sur mon action "supprimer", avec un paramètre "nom".
Voici ce que j'ai dans mon module.config.php :
[lang=php] 'routes' => array( 'home' => array( 'type' => 'segment', 'options' => array( 'route' => '/', 'constraints' => array( 'action' => '[a-zA-Z][a-zA-Z0-9_-]*', 'nom' => '[a-zA-Z0-9_-]*', ), 'defaults' => array( '__NAMESPACE__' => 'Front\Controller', 'controller' => 'Commande', 'action' => 'index', ), ), 'verb' => 'get,post', 'may_terminate' => true, 'child_routes' => array( 'action' => array( 'type' => 'segment', 'options' => array( 'route' => '/:action[/:nom]', 'constraints' => array( 'action' => '[a-zA-Z][a-zA-Z0-9_-]*', 'nom' => '[a-zA-Z0-9_-]*', ), 'defaults' => array( '__NAMESPACE__' => 'Front\Controller', 'controller' => 'Commande', 'action' => 'index', ) ), 'may_terminate' => true ) ) ),
Lorsque je click sur le lien, la page se recharge (sur l'action index) au lieu de me charger la page de l'action "supprimer".
Pourquoi?
Merci!
Hors ligne
problème résolu :
[lang=php] <a href="<?php echo $this->url('home/action', array('action' => 'supprimer', 'nom' => $commande['nom_pizza']), null, false); ?>" title="supprimer" class="delete_commande fam-delete"></a>
Hors ligne
Mon action est bien appelée, cependant l'url est de cette forme :
http://localhost/rp//supprimer/20
Comment faire pour obtenir une url plus propre du style : localhost/rp/supprimer/20 ??
Hors ligne
Ecoute...
Orkin va péter une barre, s'il passe par la.. ^^
faut absolument que tu te débrouille pour enlever ce paramètre d'action
il est vraiment important de différencier les route add, delete, update ...
Tu va gagner énormément à prendre le temps de clarifier tes routes
SI tu veux plus comprendre pourquoi regarde les sujets traitants déjà du routing y à pas mal d'explication dessus
je sais pas d'où viens ton /rp/ mais ça viens de la, tu devrais le remplacer par /rp
Dernière modification par flobrflo (31-03-2014 17:52:02)
Hors ligne
Salut, tu peux déjà commencer par configurer correctement tes routes en retirant les actions du plugins url et en les spécifiant dans des routes filles uniques ! Là t'as juste un slash en trop mais honnêtement pas envie de débugger des routes avec des regexp de partout. Donc fais des routes filles et ensuite on voit ce qui ne va pas (ça sera probablement résolu en plus)
Hors ligne
aïe je te l'avais dit t'a vexé Orkin =x
Hors ligne
hihi désolé^^, je vais mettre des child_route alors.
le rp = nom_du_site (projet)
Hors ligne
et bien vérifie dans ton htaccess ou quelque pars par la, après rp tu à du mettre un / en trop
Hors ligne
Bon mon nouveau module.config.php :
[lang=php] 'routes' => array( 'home' => array( 'type' => 'Literal', 'options' => array( 'route' => '/', 'defaults' => array( '__NAMESPACE__' => 'Front\Controller', 'controller' => 'Commande', 'action' => 'index', ), ), 'verb' => 'get,post', 'may_terminate' => true, 'child_routes' => array( 'supprimer' => array( 'type' => 'Segment', 'options' => array( 'route' => '/supprimer/:id', 'constraints' => array( 'id' => '[1-9][0-9]*', ), 'defaults' => array( 'action' => 'index', ) ), 'verb' => 'get', ), 'annuler' => array( 'type' => 'Literal', 'options' => array( 'route' => '/annuler', 'defaults' => array( 'action' => 'index', ) ), 'verb' => 'get', ), 'valider' => array( 'type' => 'Literal', 'options' => array( 'route' => '/annuler', 'defaults' => array( 'action' => 'index', ) ), 'verb' => 'get', ) ) ),
et l'appel du helper url :
[lang=php] <?php echo $this->url('home/supprimer', array('id' => $commande['id_commande']), null, false); ?>
J'ai toujours, le "rp//supprimer/22".
Le .htacess, je n'y est pas touché, il est d'origine donc aucune présence du "rp".
"rp" est en faite un Alias défini dans httpd-vhosts.conf de Apache :
Alias /rp "C:\Users\moi\Documents\GitHub\monsite\public" <Directory "C:\Users\moi\Documents\GitHub\monsite\public"> AllowOverride None Order Deny,Allow Allow from all RewriteEngine On RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteBase /rp RewriteRule ^.*$ - [NC,L] RewriteRule !\.(js|ico|txt|gif|jpg|png|css)$ index.php [NC,L] </Directory> <VirtualHost *:80> ServerName rp.local DocumentRoot "C:\Users\moi\Documents\GitHub\monsite\public" # This should be omitted in the production environment SetEnv APPLICATION_ENV development <Directory "C:\Users\moi\Documents\GitHub\monsite\public"> Options -Indexes -MultiViews +FollowSymLinks AllowOverride None Order allow,deny Allow from all RewriteEngine On RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteRule ^.*$ /index.php [NC,L] </Directory> </VirtualHost>
Dernière modification par romsVLM (31-03-2014 18:35:42)
Hors ligne
Effectivement il y a un "/" qui se rajoute.
Lorsque je tape cette url : http://localhost/rp
Je suis ridirigé vers cette url : http://localhost/rp/
Hors ligne
Fais un virtualhost comme conseillé sur la doc . Ca évite ce genre de désagrément aussi. Mise à part que toutes tes routes appelles la fonction index de Front\Controller c'est déjà bien mieux
!!
Hors ligne
Oui et attention ta route validé utilise: /annuler
Hors ligne
J'ai viré l'alias et laissé uniquement le virtual host.
Le problème du "/" est résolu.
nouveau fichier module.config :
[lang=php] 'routes' => array( 'home' => array( 'type' => 'Literal', 'options' => array( 'route' => '/', 'defaults' => array( '__NAMESPACE__' => 'Front\Controller', 'controller' => 'Commande', 'action' => 'index', ), ), 'verb' => 'get,post', 'may_terminate' => true, 'child_routes' => array( 'supprimer' => array( 'type' => 'segment', 'options' => array( 'route' => 'supprimer/:id', 'constraints' => array( 'id' => '[1-9][0-9]*', ), 'defaults' => array( 'action' => 'supprimer', ) ), 'verb' => 'get', ), 'annuler' => array( 'type' => 'Literal', 'options' => array( 'route' => 'annuler', 'defaults' => array( 'action' => 'annuler', ) ), 'verb' => 'get', ), 'valider' => array( 'type' => 'Literal', 'options' => array( 'route' => 'valider', 'defaults' => array( 'action' => 'valider', ) ), 'verb' => 'get', ) ) ),
voici l'url obtenu lors d'un appel au helper url :
rp.local/supprimer/22
Tout fonctionne. Merci beaucoup
Hors ligne