Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Une petite question rapide :
Comment ajouter un paramètre supplémentaire et static dans une route ?
Je m'explique, je veux avoir des url optimisées pour les moteurs, du genre (c'est un exemple hein) :
- http://www.xxxx.com/acheter/maison/paris/
- http://www.xxxx.com/acheter/appartement/paris/
- http://www.xxxx.com/acheter/bureaux/paris/
etc.
Tout va pointer sur la même page.
Je vais donc avoir dans mon ini:
[routes] acheter.route = "acheter/*" acheter.defaults.controller = products acheter.defaults.action = index
Sauf que moi je veux des accès directs aux produits via des liens/images et faire en sorte que pour :
- http://www.xxxx.com/acheter/bureaux/paris/
Je reçoive le paramètre "typebien" avec comme valeur "localprofessionnel" par ex.
Donc un truc du genre :
[routes] bureaux.route = "acheter/bureaux/*" bureaux.defaults.controller = products bureaux.defaults.action = index ; et la je sais pas, ; du genre bureaux.typebien = "localprofessionnel" ??
Je ne sais pas comment faire ce truc tout bête,
Merci !
A+ benjamin.
Dernière modification par Delprog (12-01-2009 13:57:32)
Hors ligne
Personne ne sait me répondre ? Oo
Hors ligne
Pas sur d'avoir bien compris ton probleme, tu veux pouvoir recuperer le deuxieme parametre c'est ca ?
Si c'est ca, voila le code ( en PHP et non .ini )
$route = new Zend_Controller_Router_Route( 'acheter/:typebien', array( 'controller' => 'acheter', 'action' => 'index' )); $router->addRoute('typebien', $route);
Et dans ton controller :
$typebien = $this->getParam('typebien');
J'ai fais de memoire, et j'ai rien pour tester...
Hors ligne
Salut,
Non c'est pas ça
Je voudrais créer une route statique dans laquelle je rajoute un paramètre avec une valeur fixe.
Par exemple que:
http://www.xxxx.com/acheter/bureaux/paris/
me renvoie sur :
http://www.xxxx.com/acheter/
avec comme paramètre "typebien" égale à "localpro".
Tout ça pour avoir une url optimisée qui correspond à des valeurs plus particulières. Dans cet exemple "bureaux" est optimisé et correspond aux paramètres "typebien=localpro".
Merci,
A+ benjamin.
Dernière modification par Delprog (12-01-2009 10:23:56)
Hors ligne
Ha oui ok, je me disais bien que ca serait pas aussi simple
Je sais pas, et je serai curieux de savoir si c'est possible
Hors ligne
Bonjour Delprog,
Soit tu fais une route statique (à mettre à la fin des routes, sinon elle ne sera pas prioritaire sur tes routes classiques) :
$route = new Zend_Controller_Router_Route_Static( 'acheter', array( 'controller' => 'products', 'action' => 'index', 'typebien' => 'localpro' ) ); $router->addRoute('routeName', $route);
Je te laisse convertir ça en config.ini...
Sinon tu peux aussi faire des redirections 301
- soit au niveau d'apache, tu utilises le mod_proxy pour faire ta redirection
- soit au niveau PHP, tu te fais un routeur à la mano au début du bootstrap du genre :
$redirect = null; switch (rtrim($_SERVER["REQUEST_URI"],"/")) { case "/acheter/bureaux/paris": $redirect = "/acheter/"; break; } if ($redirect !== null) { header("Status: 301 Moved Permanently", false, 301); header("Location: $redirect"); }
(code non testé, c'est pour donner un ordre d'idée...)
A+, Philippe
Hors ligne
Bon ben voilà :
à mettre à la fin des routes, sinon elle ne sera pas prioritaire sur tes routes classiques
En fait ce que j'avais écris naturellement dès le départ, dans mon premier post, était juste
Je n'ai juste pas considéré les priorités dans le bon sens !
Merci pour l'indication philippe.
Pour info, je faisais ça via apache avant et c'est quand même beaucoup plus intuitif comme ça pour les autres personnes qui interviennent sur le code, et encore plus avec un fichier ini.
Donc pour re-situer, pour ceux que ça intéresse, tout bêtement :
[routes] ;bureaux bureaux.route = "acheter/bureaux/*" bureaux.defaults.controller = products bureaux.defaults.action = index bureaux.typebien = "localpro" ;locaux-commerciaux locaux-commerciaux.route = "acheter/locaux-commerciaux/*" locaux-commerciaux.defaults.controller = products locaux-commerciaux.defaults.action = index locaux-commerciaux.typebien = "localcom" ;etc.
A+ benjamin.
Hors ligne
Pages: 1