les routes sur mesures



  • J'aimerais faire une route sur mesure, mais je ne sais pas ou chercher, j'ai bien la doc qui l'explique pour un module mais cela ne semble pas marcher pour un controleur, un truc du style là:

    https://stackoverflow.com/questions/35819102/module-route-with-rewrite-redirect-to-product-on-prestahop

    j'ai cru comprendre

    1. que l'on pourrait overwrite le contrôleur contact (mais que c'est pas forcement une bonne pratique) car les mises à jour ne fonctionneraient/se verraient pas.
    2. je crois que l'on pourrait ajouter directement dans le contrôleurs (mais je ne sais pas encore comment) mais la aussi à la mise à jour, cela casse.
    3. j'ai crue lire qu'on pourrait décorer le contrôleur, mais cela ne marche pas.

    class FormocontactContactControllerCore extends ContactControllerCore
    {

        public function hookModuleRoutes($params)
    {
        $customRoutes = [
            'module-' . $this->name . '-contact' => [ /* forcement ça peut pas marcher*/
                'controller' => 'contact',
                'rule' => 'contact',
                'keywords' => array(),
                'params' => array(
                    'fc' => 'module',
                    'module' => $this->name,
                ),
            ],
        ];
        return $customRoutes;
    }
    

    }

    alors je pourrais toujours le faire avec le mod rewrite d'apache, mais cela ne me permettrais pas de comprendre et le faire pour les produits.

    merci si vous aviez une piste de travail, je serais preneur.



  • je ne suis pas certain, mais je crois que ce topic répondra à mes questions

    https://bb.enter-solutions.net/topic/1114/créer-un-contrôleur-front-indépendant

    désolé pour le bruit



  • Je ne suis pas sûr d'avoir exactement compris le use case.

    Je note néanmoins que le nouveau controlleur s'appelle FormocontactContactController mais que la route stipule controller "contact", comment le Dispatcher sait qu'il doit lancer FormocontactContact ?

    Mais je persiste je n'ai pas compris l'objectif



  • @doekia

    oui, il y a un soucis parce que le bouquin que j'ai ne me propose QUE la route pour son propre module.

    Je voulais réécrire la route du contrôleur contact qui est par défaut
    https://site.com/index.php?controller=contact
    en
    https://site.com/contact.

    je me suis attaqué (un peu en dilettante, mais pas trop) à celui-ci car j'ai monté un micro-module qui donne des informatisations de contacts et qui propose un lien vers le contrôleur de contact "officiel" de phenixsuite. et je tentais de bidouiller pour le faire tomber en marche.

    mon arrière pensée est que lorsque je ferais la migration du site, je veux que les url-friendly de prestashop 1.7.7.3 (oui j'ai un coté mazo, je travaille sur un backport d'un presta 1.7.3 (ou 1.7.7.3) vers phenix suite, prestat 1.7.3 qui était une migration dans la douleur d'un presta1.4), mais c'est pour un ami et plutôt que de migrer dans l'extrême douleur vers presta 8 et bientôt 9 dans l’univers incertain de prestashop, j'ai préféré le pousser vers phenix suite. et donc je me dois de devenir compétent dans la chose. D’où mon "apprentissage" par talonnement.

    En plus le bougre veux un "identique", ce qui me fait m'arracher les cheveux....8000 lignes de global.css, moi qui avait l'habitude de monter hml/css/javascript/php à la main mes yeux pleurent des larmes de sang :-)

    Mais j'ai survolé rapidement le tuto en question, parce que j'ai plus les yeux en face des trous, et je crois que je tenterais cela demain pour voir si j'avance dans la compréhension..



  • En effet le hook d'injection des routes ne fonctionne que pour un module
    Si le besoin est seulement de changer l'url simplifié, il suffit en 1.6.x de l'ajuster dans SEO & URL, en 1.7 c'est dans Paramètres de la boutique / Traffic et SEO.
    Pas besoin de coder quoique ce soit



  • J'ai peut-être répondu trop vite dans mon dernier message car je ne suis finalement pas sûr de comprendre;
    De toute manière si un module veut implanter son propre controller front l'url simplifiée aura TOUJOURS la forme /module/<nom-du-module>/<nom-du-controller> et c'est d'ailleurs case sensitive


Se connecter pour répondre