Bruno G Posted June 28, 2020 Share Posted June 28, 2020 Bonjour, Sur la doc de Prestashop concernant les front controllers de module je suis assez perplexe : https://devdocs.prestashop.com/1.7/modules/concepts/controllers/front-controllers/ Il est expliqué qu'on doit créer une classe "exemple.php" contenant une classe dont le nom est charté NomDuModuleNomDuFIchierModuleFrontController. Ce fichier sera situé dans le dossier du module dans controllers/front et non sans src/Controllers par exemple. Rien qu'à cet endroit, je ne comprends pas pourquoi le fichier n'a pas le nom de la classe, pourquoi il n'est pas dans un dossier qui respecte les règles PSR et je me demande comment va-t'on faire pour gérer l'autoloader ! Ce contrôleur créé doit utiliser les méthodes de la classe qu'il étend : ModuleFrontController soit initContent pour get et postProcess pour POST et l'adresse serait générée par la méthode Context::getContext()->link->getModuleLink(nomDuModule, 'nomDuFichier'); Quid du fichier config/routes.yml ? Comment ajouter de nouvelles méthodes sensées juste renvoyer une JsonResponse pour un appel ajax tout simple par exemple. Je suis assez perplexe et cette page de doc pourtant actuelle me semble très archaïque et à l'opposé de l'intégration de Symfony dans Prestashop alors qu'un front controller de module me semble assez utilisé pour les développeurs de modules.... Merci à vous d'éclairer ma lanterne au cas où il y aurait une nouvelle manière de faire comme pour les contrôleurs admin https://devdocs.prestashop.com/1.7/modules/concepts/controllers/admin-controllers/ 1 Link to comment Share on other sites More sharing options...
Janett Posted June 28, 2020 Share Posted June 28, 2020 Symfony n’est pas disponible sur le front, tu dois forcément utiliser le legacy de PrestaShop. Donc les vieilles méthodes dont tu parles ainsi que l’autoload legacy de PrestaShop qui fonctionne très bien malgré les nom de fichiers qui ne correspondent pas à la classe. Pour l’ajax c’est degueulasse, tu dois utiliser le fonction ajaxDie du controller avec un json_encode. Rien n’empêche de bidouiller un truc plus sexy en utilisant des dépendances mais bon ça prend plus de temps. D’ailleurs tu ne dois pas utiliser de namespace, tout reste dans le namespace global. En gros tu ne dois utiliser de namespace que dans ton dossier src et/ou vendor si tu as des dépendances. En général, je déplace toute la logique applicative dans src et le legacy du namespace global se charge d’utiliser mon code dans src 1 Link to comment Share on other sites More sharing options...
Bruno G Posted June 28, 2020 Author Share Posted June 28, 2020 3 hours ago, Janett said: Symfony n’est pas disponible sur le front, tu dois forcément utiliser le legacy de PrestaShop. Donc les vieilles méthodes dont tu parles ainsi que l’autoload legacy de PrestaShop qui fonctionne très bien malgré les nom de fichiers qui ne correspondent pas à la classe. Pour l’ajax c’est degueulasse, tu dois utiliser le fonction ajaxDie du controller avec un json_encode. Rien n’empêche de bidouiller un truc plus sexy en utilisant des dépendances mais bon ça prend plus de temps. D’ailleurs tu ne dois pas utiliser de namespace, tout reste dans le namespace global. En gros tu ne dois utiliser de namespace que dans ton dossier src et/ou vendor si tu as des dépendances. En général, je déplace toute la logique applicative dans src et le legacy du namespace global se charge d’utiliser mon code dans src Ouais du coup c'est ce que j'ai fait.. Même l'utilisation du ajaxDie est marquée comme deprecated ça craint. Une idée de date/version de l'implémentation de Symfony sur le front à tout hasard ? Merci pour ta réponse en tout cas Link to comment Share on other sites More sharing options...
Janett Posted June 28, 2020 Share Posted June 28, 2020 ajaxDie est dépréciée depuis 1.7.6 je crois en faveur de ajaxRender Symfony n'est pas prévu sur le front avant 1.8 d'après ce que j'ai lu sur le blog des développeurs 1 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