Bonjour à tous,
Je me mets à CakePHP doucement et je rencontre quelques problème sur le routing. Après de nombreuses recherches infructueuses sur le net je me décide donc à poster un message.
Je souhaiterai passer mon site sur Cake tout en conservant les anciennes URLs (pour le référencement). Mon but est d'adapter Cake. Les urls actuelles ont cette forme :
http://wwww.monsite.com/nom-categorie/nom-produit.html
http://wwww.monsite.com/actualites/actualite.html
Pour les urls comme actualités ça reste simple ; un controller est créé et les paramètres sont passés dans les liens et récupérés dans le router :
Router::connect('/actualites/:slug',
array('controller'=>'actualites','action'=>'view'),
array('pass'=>array('slug'))
);
Pour les produits :
Router::connect('/:categorie',
array('controller'=>'pages','action'=>'categorie'),
array('pass'=>array('categorie'))
);
Router::connect('/:categorie/:slug',
array('controller'=>'pages','action'=>'view'),
array('pass'=>array('categorie','slug'))
);
Dans l'absolu tout fonctionne. Mais je suis obligé de créer une règle pour chaque controller en plus. Et si le controller n'existe pas la règle des produits reprend le dessus et génère des erreurs. De plus, les actions avec le controller users font planter le système.
Je précise également qu'il n'est pas possible de créer un controller par catégorie de produit (même si elles sont peur nombreuses) car ces catégories contiennent des tirets.
Je n'ai pas trouvé de solution dans la doc et si j'ai bien compris ce problème est insoluble à part recréer un controller pour les produits et donc changer d'URL en http://www.monsite.com/produits/no-categorie/nom-produit.html.
Si vous avez une idée, une astuce je suis preneur.
Un grand merci !