Jump to content

Fatal error: Class 'FrontController' not found


Recommended Posts

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

  • 1 year later...

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 by Kosoca
faute de frappe (see edit history)
Link to comment
Share on other sites

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 by Kosoca (see edit history)
Link to comment
Share on other sites

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

  • 9 months later...

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...