Url rewrite avec params['named']

Par kewek19, il y a 11 ans


Bonjour à tous,
Je bloque depuis hier sur une réécriture d'url avec des "parametres nommé" dans l'url :
Exemple : professionnels/recherche/theme:bien-etre-9/type:theme-anniversaire

Je voudrais que le résultat donne quelque chose comme ceci :
professionnels/recherche/nom-du-theme/theme-anniversaire

J'ai beau jouer avec les Router, je n'arrive pas à mes fins :

Router::connect( '/:controller/:action/*', array('controller' => 'professionnels', 'action' => 'recherche'), array( 'named' => array( 'theme' => array('pass' => array('id','slug') , array('id' => '[0-9]+', 'slug' => '[a-z0-9\-]+')), ) ) );

Si quelqu'un à déjà résolu ce genre de problème je suis preneur :-)

2 réponses

JC_Pires, il y a 11 ans
Router::connect( '/professionnels/recherche/:theme-:id/:type', array('controller' => 'professionnels', 'action' => 'recherche'), array( 'pass' => array('theme','id', 'type') , 'id' => '[0-9]+', 'theme' => '[a-z0-9\-]+', 'type' => '[a-zA-Z]+' ) ); // Dans ton Controller Professionnels public function recherche($theme = null, $themeId = null, $type = null) { // du code ici... }
kewek19, il y a 11 ans

Super merci! Ca marche du premier coup.

Cependant, dans le cas ou le type n'est pas renseigné ça ne fonctionne plus donc à défault de trouver mieux pour le moment j'ai créé 2 routes

Router::connect( '/professionnels/:theme', array('controller' => 'professionnels', 'action' => 'recherche'), array( 'pass' => array('theme') , 'theme' => '[a-z0-9\-]+' ) ); Router::connect( '/professionnels/:theme/:type', array('controller' => 'professionnels', 'action' => 'recherche'), array( 'pass' => array('theme', 'type') , 'theme' => '[a-z0-9\-]+', 'type' => '[a-z0-9\-]+' ) );