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
Réponse acceptée
        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
Auteur

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\-]+'
        )
    );