OpenCart管理パネルを介して注文を処理し、内部から確認します

コンテンツ





  • インターフェース





  • 注文の変更





  • 注文変更の保存





  • 結果





OpenCartのモジュールを開発しているときに、注文アイテムにフィールドを追加する必要がありました。ただし、最初に、管理パネルを介した注文の作業がどのように配置されているかを調べる必要があります 結局のところ、スキームは単純ではなく、少し混乱していますが、これは一見しただけです。





注文の商品に関するデータは、注文のある商品が (、  )でorder_product



リンクされているテーブルに 格納されます ちなみに、注文情報はいくつかのテーブルに保存されてい ます。id



order_id



product_id



order_







インターフェース

「Sales-Orders」管理パネルに移動して、 編集する注文を選択しましょう 





注文編集ページは5つのタブ構成されており、各タブには前のタブからのみアクセスできます([続行]ボタンをクリック)。一部のタブに切り替えると、ajaxリクエストが発生し 、その応答に基づいてタブが入力されます。 。





ブラウザでjsが無効になっている場合 、注文の編集は利用できません任意のタブに移動することはできません。





 admin/view/teplate/sale/order_form.tpl



 (OpenCart 2.3).   , "" (  #button-customer



   #button-refresh



  )   ajax ,   .





javascript.





"".





ajax  route=api/cart/add



.  catalog/controller/api/cart.php



   add



   $this->cart



  Cart



 (),  add



. ,    cart



,  order_



.





 cart



   session_id



, ,  $_SESSION



.    cart



   .





,  ajax OpenCart    API OpenCart.





- ( cart



), ( order_



)





"", "".





 route=api/order/edit



.  catalog/controller/api/order.php



   edit



,  order_data



  ($this->cart->getProducts()



).





, :





// Products
$order_data['products'] = array();
 
foreach ($this->cart->getProducts() as $product) {
    $option_data = array();
 
    //...
 
    $order_data['products'][] = array(
        'product_id' => $product['product_id'],
        'name'       => $product['name'],
        'model'      => $product['model'],
        'option'     => $option_data,
        'download'   => $product['download'],
        'quantity'   => $product['quantity'],
        'subtract'   => $product['subtract'],
        'price'      => $product['price'],
        'total'      => $product['total'],
        'tax'        => $this->tax->getTax($product['price'], $product['tax_class_id']),
        'reward'     => $product['reward']
    );
}
      
      



 checkout/order



   order_product



:





$this->model_checkout_order->editOrder($order_id, $order_data);
      
      



:





$this->model_checkout_order->addOrderHistory($order_id, $order_status_id);
      
      



... :)





 order_product



:





 cart



  :





(cart



), (order



)?    . !





  ,  api/order/edit



 :





  • token



     





  • order_id



     





 checkout/order



   editOrder



  :





$this->db->query("DELETE FROM " . DB_PREFIX . "order_product WHERE order_id = '" . (int)$order_id . "'");
$this->db->query("DELETE FROM " . DB_PREFIX . "order_option WHERE order_id = '" . (int)$order_id . "'");
      
      



:





   .





, , , .





, OpenCart eCommerce  BuiltWith. :)





, .





スキームは完全に明白ではなく、一見混乱しているように見えるかもしれません。ただし、詳細に検討すると、概念が明らかになり、その本質はデータ管理の単純さです。私はこのソリューションが好きだとは言えませんが、それがかなり機能していることは明らかです。





著者:Vitaly Buturlin








All Articles