PrestashopUser03 Posted July 17, 2020 Share Posted July 17, 2020 Bonjour à tous, Je suis en train de développer un module, j'ai utilisé le générateur de modules de prestashop. Je souhaite actuellement créer une page custom, j'ai donc voulu créer un controller, seulement lorsque je le teste, je reçois l'erreur Fatal error: Class 'FrontController' not found. Voici mon code <?php class MonmodModuleFrontController extends ModuleFrontController { public function initContent() { parent::initContent(); $this->setTemplate('module:monmod/views/templates/front/formulaire.tpl'); } } Le fichier est placé de la sorte : modules/monmod/controllers/front/formulaire.php Merci d'avance pour vos réponses. Link to comment Share on other sites More sharing options...
PrestashopUser03 Posted July 20, 2020 Author Share Posted July 20, 2020 Personne ne sait ? Link to comment Share on other sites More sharing options...
Kosoca Posted August 12, 2021 Share Posted August 12, 2021 Bonjour, j'ai exactement le même problème que vous ! J'ai beau chercher sur internet, je ne trouve aucune réponse Link to comment Share on other sites More sharing options...
Baba deCode Posted August 16, 2021 Share Posted August 16, 2021 Salut, comment s'appelle ton module et ton controlleur front ? cdt Link to comment Share on other sites More sharing options...
Kosoca Posted August 16, 2021 Share Posted August 16, 2021 (edited) Bonjour Alexandre Carette, Mon module s'appel : chronos_accueil et mon Front controller s'appel : Accueil je vous met mon code dans le post pour plus de precision : Le fichier de création du module chronos_accueil.php <?php /** * Verifier si la version de prestashop est bonne */ if (!defined('_PS_VERSION_')) { exit; } /** * constructeur du module d'accueil de la partie pro et particulier */ class Chronos_Accueil extends Module { public function __construct() { $this->name = 'chronos_accueil'; $this->tab = 'front_office_features'; $this->version = '1.0.0'; $this->author = 'Chronos'; $this->controllers = array('Accueil'); $this->need_instance = 0; $this->ps_versions_compliancy = [ 'min' => '1.7', 'max' => _PS_VERSION_ ]; $this->bootstrap = true; parent::__construct(); $this->displayName = $this->l('Module accueil de chronos'); $this->description = $this->l('Module agissant sur la partie accueil pro et particulier.'); $this->confirmUninstall = $this->l('Êtes-vous sûr de vouloir désinstaller ce module ?'); if (!Configuration::get('CHRONOS_ACCUEIL_PAGENAME')) { $this->warning = $this->l('Aucun nom fourni'); } } /** * fonction pour installer le module */ public function install() { if (Shop::isFeatureActive()) { Shop::setContext(Shop::CONTEXT_ALL); } if (!parent::install() || !$this->registerHook('header') || !Configuration::updateValue('CHRONOS_ACCUEIL_PAGENAME', 'Mentions légales')) { return false; } return true; } /** * fonction pour déinstaller le module */ public function uninstall() { if (!parent::uninstall() || !Configuration::deleteByName('CHRONOS_ACCUEIL_PAGENAME')) { return false; } return true; } } Le front controller Accueil.php <?php if (!defined('_PS_VERSION_')) exit; class ChronosAccueilFrontController extends ModuleFrontController { public function initContent() { parent::initContent(); $this->setTemplate('module:chronos_accueil/views/templates/front/accueil.tpl'); } } Le fichier template smarty accueil.tpl {extends file='page.tpl'} {block name='page_header_container'}{/block} {block name='page_content'} <p>Page d'accueil de mon site</p> {/block} Edited August 16, 2021 by Kosoca faute de frappe (see edit history) Link to comment Share on other sites More sharing options...
Mediacom87 Posted August 16, 2021 Share Posted August 16, 2021 Il y a 5 heures, Kosoca a dit : class ChronosAccueilFrontController extends ModuleFrontController { Bonjour, le module est sur la classe Chronos_Accueil et le controller est Accueil donc le nommage de cette classe ne me semble pas bon. Link to comment Share on other sites More sharing options...
Kosoca Posted August 16, 2021 Share Posted August 16, 2021 (edited) Bonjour, après avoir modifier le nom de mon controller, quand je demande la page de mon template, j'ai une erreur PHP sur la page en font blanc : ERREUR EN QUESTION : Warning: include_once(/home/web/www/demo_chronos/modules/chronos_accueil/controllers/front/accueil.php): failed to open stream: No such file or directory in /home/web/www/demo_chronos/classes/Dispatcher.php on line 395 Warning: include_once(): Failed opening '/home/web/www/demo_chronos/modules/chronos_accueil/controllers/front/accueil.php' for inclusion (include_path='/home/web/www/demo_chronos/vendor/pear/pear_exception:/home/web/www/demo_chronos/vendor/pear/console_getopt:/home/web/www/demo_chronos/vendor/pear/pear-core-minimal/src:/home/web/www/demo_chronos/vendor/pear/archive_tar:.:/usr/share/php') in /home/web/www/demo_chronos/classes/Dispatcher.php on line 395 Fatal error: Uncaught Error: Class 'chronos_accueilaccueilModuleFrontController' not found in /home/web/www/demo_chronos/classes/controller/Controller.php:233 Stack trace: #0 /home/web/www/demo_chronos/classes/Dispatcher.php(510): ControllerCore::getController('chronos_accueil...') #1 /home/web/www/demo_chronos/index.php(28): DispatcherCore->dispatch() #2 {main} thrown in /home/web/www/demo_chronos/classes/controller/Controller.php on line 233 Merci beaucoup de prendre de votre temps pour m'aider Edited August 16, 2021 by Kosoca (see edit history) Link to comment Share on other sites More sharing options...
Baba deCode Posted August 16, 2021 Share Posted August 16, 2021 Salut, Essaye de renommer module et classe (sans underscore) class nomdumoduleNomducontrollerFrontController extends ModuleFrontController cdt Link to comment Share on other sites More sharing options...
Kosoca Posted August 16, 2021 Share Posted August 16, 2021 Bonjour, Je viens de renomer le fichier selon le format que vous m'avez donné et la page m'affiche une erreur PHP (encore) : ERREUR EN QUESTION : Fatal error: Uncaught Error: Class 'chronosaccueilAccueilModuleFrontController' not found in /home/web/www/demo_chronos/classes/controller/Controller.php:233 Stack trace: #0 /home/web/www/demo_chronos/classes/Dispatcher.php(510): ControllerCore::getController('chronosaccueilA...') #1 /home/web/www/demo_chronos/index.php(28): DispatcherCore->dispatch() #2 {main} thrown in /home/web/www/demo_chronos/classes/controller/Controller.php on line 233 Je vous remontre mon code pour voir les modifications effectués : Fichier principale du module chronosaccueil.php : <?php /** * Verifier si la version de prestashop est bonne */ if (!defined('_PS_VERSION_')) { exit; } /** * constructeur du module d'accueil de la partie pro et particulier */ class chronosaccueil extends Module { public function __construct() { $this->name = 'chronosaccueil'; $this->tab = 'front_office_features'; $this->version = '1.0.0'; $this->author = 'Chronos'; $this->controllers = array('Accueil'); $this->need_instance = 0; $this->ps_versions_compliancy = [ 'min' => '1.7', 'max' => _PS_VERSION_ ]; $this->bootstrap = true; parent::__construct(); $this->displayName = $this->l('Module accueil de chronos'); $this->description = $this->l('Module agissant sur la partie accueil pro et particulier.'); $this->confirmUninstall = $this->l('Êtes-vous sûr de vouloir désinstaller ce module ?'); if (!Configuration::get('CHRONOS_ACCUEIL_PAGENAME')) { $this->warning = $this->l('Aucun nom fourni'); } } /** * fonction pour installer le module */ public function install() { if (Shop::isFeatureActive()) { Shop::setContext(Shop::CONTEXT_ALL); } if (!parent::install() || !$this->registerHook('header') || !Configuration::updateValue('CHRONOS_ACCUEIL_PAGENAME', 'Mentions légales')) { return false; } return true; } /** * fonction pour déinstaller le module */ public function uninstall() { if (!parent::uninstall() || !Configuration::deleteByName('CHRONOS_ACCUEIL_PAGENAME')) { return false; } return true; } } FrontController Accueil.php : <?php if (!defined('_PS_VERSION_')) exit; class chronosaccueilAccueilFrontController extends ModuleFrontController { public function initContent() { parent::initContent(); $this->setTemplate('module:chronosaccueil/views/templates/front/accueil.tpl'); } } Template smarty accueil.tpl : {extends file='page.tpl'} {block name='page_header_container'}{/block} {block name='page_content'} <p>Page d'accueil de mon site</p> {/block} Link to comment Share on other sites More sharing options...
Baba deCode Posted August 16, 2021 Share Posted August 16, 2021 essaye class chronosaccueilaccueilModuleFrontController extends ModuleFrontController { et vide les caches en cas Link to comment Share on other sites More sharing options...
Kosoca Posted August 16, 2021 Share Posted August 16, 2021 CA MARCHE !!!!!! Le problème était sans doute que je n'avais pas mis ModuleFrontController dans le nom de la classe Merci beaucoup et bonne journée à vous Link to comment Share on other sites More sharing options...
PrestashopUser03 Posted June 8, 2022 Author Share Posted June 8, 2022 J'ai à nouveau été confronté au problème, cette fois ci ça fonctionnait localement mais pas en prod. Pour régler ce problème, il faut simplement nommer le fichier du controller en minuscule. 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