Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour tout le monde,
Je souhaite personnaliser la route des liens de mes pages genre : http://localhost/exemple/public/city/paris.php,alors j'ai utilisé ce code et cela marche bien :
Dans mon bootstarp :
protected function _initRouter() { $router = Zend_Controller_Front::getInstance()->getRouter(); $route = new Zend_Controller_Router_Route_Regex('city/([-\w]+)\.php?', array( 'controller' => 'index', 'action' => 'index' ), array( 1 => 'paris', ), 'city/%s.php'); $router->addRoute('city', $route); return $router; }
et dans mon IndexController:
public function indexAction() { $this->view->route_variables = Zend_Controller_Front::getInstance() ->getRouter() ->getRoute('city') ->getVariables(); }
mais mon problème c'est :
Je ne sais pas comment améliorer le code au dessus pour une autre page comme : http://localhost/exemple/public/city/marseille.php,c'est à dire quand j'ajoute une autre route je trouverai une confusion entre les pages parce que quand je récupère dans mon action la route par ''getRoute('city')" alors j'utilise le même code deux fois dans deux actions donc ici je trouve la confusion...
Je sais que c'est une question un peu bête mais j'imagine pas comment faire comme exemple si je cherche à personaliser 10 pages de mon site alors je dois créer 10 fois ma fonction "_initRouter()"...
je n'ai pas voulu écrire les codes que j'ai essayé car toujours ne donnent rien...
Merci.Nll
Dernière modification par elec (16-12-2009 10:27:28)
Hors ligne
Bonjour,
Il y a une petite erreur dans ta configuration à la ligne " 1=> 'paris' "
$route = new Zend_Controller_Router_Route_Regex('city/([-\w]+)\.php?', array( 'controller' => 'index', 'action' => 'index' ), array( 1 => 'cityName', ), 'city/%s.php');
Ensuite tu peux récupérer le nom de la ville dans ton indexAction en faisant :
$cityName = $this->_getParam("cityName");
donc si l'internaute appelle la page .../city/marseille.php, tu récupèreras "marseille" dans $cityName.
A+, Philippe
Hors ligne