2015-11-16 40 views
3

我正在使用opencart版本2.1.0.1並嘗試使用新的腳本通知系統。 請注意,我已經安裝了原始版本。沒有額外添加或修改。Opencart 2:未觸發的事件

以下教程在這裏找到:http://isenselabs.com/posts/opencart2-event-system-tutorial 我設法創建一個新模塊併成功安裝它。 我可以從數據庫確認它已經註冊了我想要觸發的事件。

爲了給你一個更好的畫面我已經創建這些文件:

  • 管理/控制/模塊/ testo.php
  • 管理/視圖/模板/ module.testo.tpl
  • 管理/語言/英語/模塊/ testo.php
  • 目錄/控制器/模塊/ testo.php

現在雖然管理事件,沒有問題Ť觸發他目錄(前面)順序事件永遠不會開火。

管理員/控制器/模塊/ testo.php功能安裝,我有以下電話:

$this->model_extension_event->addEvent('testo', 'post.order.add', 'module/testo/on_order_add'); 

而且根據教程功能火應在目錄/控制器/模型/ testo.php

public function on_order_add($order_id) { .... } 

該函數只是將order_id寫入文本文件,沒有什麼棘手的。

因此,當我完成一個訂單時,該功能從不運行。 我已經嘗試了大多數訂單通知掛鉤沒有運氣。

我錯過了什麼嗎? 有什麼我不理解? 請幫助,因爲是絕對沒有的文檔和我在一個死衚衕(持續時間)

+0

檢查日誌你必須改變事件名稱試過嗎? –

+0

不知道我明白你的意思嗎? – ion

+0

請注意,在較新版本的OpenCart中不再支持以點表示形式的觸發器;這被改爲使用路線表示法。請參閱https://github.com/opencart/opencart/wiki/Events-(script-notifications)-2.2.x.x –

回答

2

您錯誤地調用它,你的目錄文件路徑必須是

catalog/controller/module/testo.php 

catalog/controller/model/testo.php 

,因爲你的觸發是

$this->model_extension_event->addEvent('testo', 'post.order.add', 'module/testo/on_order_add'); 

它的意思 - > Opencart將搜索目錄/控制器/模塊/ testo.php文件,並會在'post.order.add'觸發器執行時調用它的on_order_add()函數(因爲目錄端的觸發器會使用目錄/ *,否則它將使用admin/*),'testo'只是名稱的一部分,注意重要。

在你的情況下,它搜索正確的,但你沒有任何文件的這條道路上,因爲您添加文件到

catalog/controller/model/testo.php 

因此改變你的文件夾結構 - >模型模塊或模塊改變你的觸發模型。

+0

你是對的,但我只是注意到模型是一個錯字..我有文件裏面/模塊文件夾。所以問題是別的!我將編輯帖子。謝謝 – ion

0

你確定寫入文本文件正在工作嗎?

因爲我也試圖在我的Opencart 2.0.3.1上獲得post.order.add事件,並且它的工作正常。

嘗試寫日誌文件

<?php 

class ControllerModuleTesto extends Controller 
{ 
    public function on_order_add($order_id) 
    { 
     $this->log->write("Order Id " . $order_id . " was created."); 
    } 
} 
?> 

,並在backend->工具 - >錯誤日誌