2017-06-18 4 views
1

Opencartイベントシステムを理解できません。たとえば、独自のAPIを持つ外部CRMに注文をプッシュしたいとします。私は/catalog/controller/extension/module/mykmykpet_bitrix24.php次に書いた訓練のために、Opencartでイベントを処理する方法は?

class ControllerExtensionModuleMykmykpetBitrix24 extends Controller{ 
    public function install(){ 
     $this->load->model('extension/event'); 
     $this->model_extension_event->addEvent('Bitrix24','catalog/model/checkout/order/addOrder/after','extension/module/mykmykpet_bitrix24/newOrderToCRM'); 
    } 

    public function uninstall(){ 
     $this->load->model('extension/event'); 
     $this->model_extension_event->deleteEvent('Bitrix24'); 
    } 
} 

次へ:私は、ファイル内の/admin/controller/extension/module/mykmykpet_bitrix24.php次のコードを書きました私はそれを持って、なぜ E-mail content

しかし:コード:

class ControllerExtensionModuleMykmykpetBitrix24 extends Controller{ 
    public function newOrderToCRM($orderID){ 
     mail("[email protected]","Hello from OpenCart Event",$orderID); 
    }  
} 

次は、私がテスト順序を置くと、この電子メールを得ましたか。私は注文の識別を待っていますが、私が使った方法への道ではありません。私のミスはどこですか?お願い助けて。

答えて

0

$this->requestをorder_idに見る必要がありますが、どこかにあると確信しています。イベントシステムによってパラメータとして渡されることはありません。あなたの例order_id

1

OpenCart 2.3.0.2

は三番目のパラメータです。あなたは、ログでそれをテストすることができます - ルート

2018年1月5日午前17時04分17秒:

public function newOrderToCRM($route = false, $order_info = false, $order_id = false){ 
    $this->log->write('Route: ' . $route); 
    $this->log->write('Order Info: '); 
    $this->log->write($order_info); 
    $this->log->write('Order ID: ' . $order_id); 
} 

置きため、その後、あなたのエラーログを確認し、これが私にとっての結果であります:チェックアウト/順序/ addOrder

2018年1月5日夜05時04分17秒 - 注文情報:2018年1月5日夜05時04分17秒 - アレイ(アレイ内の注文情報)

2018-01- 05 17:04:17 - 注文ID:130

関連する問題