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