Bonjour,

J’utilise le framework perso disponible dans ce tuto que j'ai modifier pour mes besoins.

Pour certaines pages j'utilise des slash dans le slug URL (sans id) pour certaines pages, mais les slug url contenant un slash sont interprétés comme des paramètres.

Ex.
/home/
/product
/product/example (ici "product" est considéré comme un paramètre alors que le slug url est "product/example")

Dans cakephp il suffit de mettre un double ** (étoile trailing) pour capturer/utiliser un argument incluant un slash...
EX. http://book.cakephp.org/2.0/fr/development/routing.html#routes-configuration

J'ai tenter plusieurs choses sans succès et je sèche:

Router::connect(':slug', array('controller'=>'pages', 'action'=>'view'), array('slug:' => '[a-z0-9\-\/]+'));

1 réponse


Dans la définition du slug, il est interdit pour un slug de posséder un / ^^ il doit être remplacé par un -.
Vue le système mis en place, je crois qu'il n'es réellement pas possible pour toi d'avoir des / dans tes slugs.

Une solution serait de transformer tout tes / en - pour correspondre à la définition du slug
ou encore de le remplacer par une autre caractère que le / dans la fonction url() te la classe Router, de manière à construire des urls bien formatés, par exemple en remplaçant le / par _ pour les slugs, puis quand tu récupères ton slug plus tard, tu le transforme à nouveau en remplaçant le _ en /.

Ou sinon de revoir un peu la structure du framework.