Bonjour,

Je suis débutant sur CakePHP, et je souhaiterais faire un routing un peut particulier.

En faite c'est un routing un peut à la YouTube/DailyMotion.

C'est à dire, que j'aimerais avoir des URL comme celle-ci:
www.exemple.com/Emeric et que cette URL pointe vers le controller channels et l'action index.

En meme temps je souhaiterais garder aussi le système de routing normal, c'est à dire :
www.exemple.com/users et que celle_ci pointe vers le controller users et l'action index
www.exemple.com/users/signup et que celle_ci pointe vers le controller users et l'action signup

En plus, pour couronner le tout, j'ai un système d’internationalisation qui vient directement du tutoriel présent sur Graphikart, donc des routing comme ceci :

Router::connect('/:language/:controller/:action/*',
                array(),
                array('language' => '[a-z]{3}')
       ); 

        Router::connect('/:language/:controller/*',
                array(),
                array('language' => '[a-z]{3}')
       );

D'un point de vue théorique, il faudrait :
Qu'on regarde si un controller existe pour le premier paramètre
....Si il existe :
........On regarde si il a l'action de renseigner dans l'URL :
............Si oui :
................On fait l'action (et on passe les éventuels paramètres de l'action)
............Si non :
................On fait l'action index
....Si il existe pas :
........On appelle le controller channels et l'action index

En gros c'est un peut prêt ça, avec en plus le routing pour le système d’internationalisation.

J'ai essayer pas mal de chose mais rien n'y fait, le premier mot, exemple : www.exemple.com/users est redirigé vers le controller channels, alors que quand je précise l'action, exemple : www.exemple.com/users/signup il me redirige bien sur le controller users et l'action signup.

Voici le code d'une des façons que j'ai essayé :

Router::connect('/:language/:controller/:action/*',
                array(),
                array('language' => '[a-z]{3}')
       ); 

        Router::connect('/:language/:controller/*',
                array(),
                array('language' => '[a-z]{3}')
       );
        Router::connect('/:language/:user',
                array('controller'=>'channels', 'action'=>'index'),
                array('language' => '[a-z]{3}')
       ); 

        Router::connect('/:user',
                array('controller'=>'channels', 'action'=>'index')
       );

Si quelqu'un est un boss en routing, je suis preneur. ^^

1 réponse


Xeta
Auteur

Personne sait comment faire ? :(