2017-06-05 2 views
1

Je suis nouveau dans le développement de modules Opencart et essaye de créer un module personnalisé avec des événements sur OC 2.3.x. Voici le code que je l'ai fait:Les événements du module personnalisé opencart 2.3.x ne sont pas déclenchés

class ControllerExtensionModuleFSElias extends Controller 
{ 
    public function install() 
    { 
     $this->load->model('extension/event'); 
     $this->model_extension_event->addEvent('fselias', 'admin/model/catalog/product/addProduct/after', 'fselias/events/add_product'); 
    } 

    public function add_product($route, $product_id) 
    { 
     $this->load->model('sale/order'); 
     $this->load->model('catalog/product'); 

     //$product_id - you can get the product id that was recentlt added in this function 
     $log = date("F j, Y, g:i a") . ': ' . $route . ': ' . $product_id . PHP_EOL; 
     file_put_contents('./products_log_' . date("j.n.Y") . '.txt', $log, FILE_APPEND); 
    } 
} 

L'événement est enregistré mais pas se déclencher lors de l'ajout d'un nouveau produit, s'il vous plaît ce que j'ai fait de mal là-dedans?

Répondre

0

Je ne suis pas sûr que la chaîne que vous avez fournie pour l'argument 3 (fselias/events/add_product) est correcte; c'est censé être une route vers un contrôleur. Mais ce que vous pouvez faire pour déboguer ceci est de définir un point d'arrêt dans system/engine/loader.php où les événements post sont déclenchés et de voir ce qui se passe avec votre événement. Si l'événement ne peut pas être trouvé, le système échoue silencieusement - cela m'est arrivé, et l'exécution du système dans le débogueur était la seule façon de le localiser.

+0

Pourriez-vous préciser comment on "* voit ce qui se passe avec votre événement *"? –

+0

Si vous définissez un point d'arrêt dans le chargeur, vous verrez comment les événements sont traités. Par exemple, peut-être que votre événement n'y arrive pas, ou peut-être que c'est le cas et a une sorte d'erreur. –