Julien Posted June 30, 2021 Share Posted June 30, 2021 (edited) Bonjour à tous, Je développe actuellement un module permettant de créer des pages en partant de plusieurs templates. Pour l'affichage de ces pages je passe par un front contrôleur de mon module avec un paramètre en GET pour définir la page à générer, exemple: www.urlsite.com/fr/modules/blog/page?page_id=1, celui-ci va ensuite afficher le bon template avec le contenu associé. J'aurais aimé que l'utilisateur puisse choisir l'url simplifiée de sa page, comme www.urlsite.com/fr/blog/titre-de-ma-page Le problème est que les réécriture d'url sous Prestashop sont gérées par une table "ps_meta" qui prend uniquement en compte le module à appeler et le contrôleur associé, je ne peux donc pas ajouter ce paramètre "page_id" en GET.. Je pourrais uniquement simplifié l'url de cette façon: www.urlsite.com/fr/blog/page?page_id=1 mais ce n'est pas ce que je souhaite. J'ai cherché du côté des routes Symfony mais j'ai du mal à voir comment l'intégrer sur un module front, l'idéal aurait été de créer une route Symfony prenant un paramètre dans l'url et appelant le contrôleur de mon module : blog_list: path: /blog/{page} controller: Modules\ModuleName\Controllers\Front\BlogController::view requirements: page: '\d+' Quelqu'un aurait une solution pour créer cette route Symfony ou bien une solution alternative ? Merci d'avance ! Julien Edited July 7, 2021 by Julien (see edit history) Link to comment Share on other sites More sharing options...
Julien Posted July 7, 2021 Author Share Posted July 7, 2021 Problème résolu en passant par le hook moduleRoute : /** * Add module route */ public function hookModuleRoutes() { $route = array( 'module-module_name-moncontroler' => array( 'controller' => 'moncontroler', 'rule' => 'mapage/{:slug}', 'keywords' => array( 'slug' => array('regexp' => '[_a-zA-Z0-9\pL\pS/.:+-]*', 'param' => 'slug'), ), 'params' => array( 'fc' => 'module', 'module' => 'module_name', 'controller' => 'moncontroler', ) ), ); if (Tools::getValue('controller') != 'AdminModules') { return $route; } } Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now