Jump to content

par quoi remplacer ControllerFactory::getController('


Recommended Posts

ce doit surement être une question idiote vu que je n'ai trouvé aucune réponse par ailleurs.

 

J'avais un module qui utilisait dans une page 'a part':

require(dirname(__FILE__).'/../../../config/config.inc.php');
ControllerFactory::getController('ProductController')->MaMethode();

 

ça ne marche plus avec la version 1.5 qui me renvoit une une erreur 500

Le site Web a rencontré une erreur lors de l'extraction de http://localhost/pre...97159609012306.

 

Comment puis je accéder à la méthode d un Controller (overridé ou pas) avec Prestashop 1.5

 

Merci

Edited by ademus (see edit history)
Link to comment
Share on other sites

J'ai trouvé 3 pistes pour instancier un controller afin d'utiliser une de ses méthodes, voire (mieux encore) une méthode overridée :

 

 

Methode 1 : Création d'une nouvelle page blanche.

http://www.prestasho...11#entry1048811

Cette méthode un peu lourde car elle oblige à la création de nouveaux fiohiers hors des repertoires réversés à l'override.

 

 

 

 

Méthode 2 : On peut se servir de :

Controller::getController('MapageController')->maFunction

mais cette méthode ne fonctionne pas avec les overrides :wacko:

 

 

 

 

Methode 3 : Enfin ma méthode perso préférée :

dans un fiohier 1, on crée une classe étendant le controller qu'on veut utiliser :

class MonController extends ProductControllerCore
{
public function maMethode()
{
   echo 'OK'; return 'OK';
[spam-filter]

 

Dans un fiohier 2 on inclut le fichier 1 et on crée un nouveau MonController qui nous permettra d'avoir accès à toutes les méthodes du controller visé, y compris les méthodes overridées.

 

// inclut le fichier ocnfig de prestashiop pour avoir accés à tout le systéme
require(dirname(__FILE__).'/../../../config/config.inc.php');

require(dirname(__FILE__).'/fichier1.php');

 $monController = new MonController();
  $monController ->maMethode();

Edited by ademus (see edit history)
  • Like 1
Link to comment
Share on other sites

  • 1 month later...

Bravo ademus c'est la bonne solution ça marche aussi pour moi :

 

<?php

require_once(dirname(__FILE__).'/config/config.inc.php');

//ControllerFactory::getController('J2tcrosssellsController')->run();

 

require_once(dirname(__FILE__).'/controllers/J2tcrosssellsController.php');

 

$monController = new J2tcrosssellsControllerCore();

$monController ->run();

Link to comment
Share on other sites

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...