Điểm:0

Việc đặt $order_item->setUnitPrice($price, TRUE);) dừng hợp nhất các mặt hàng trong giỏ hàng, làm cách nào để ngăn chặn điều này?

lá cờ cn

Drupal Commerce 2, với Drupal 9.

Trong sự kiện CART_ENTITY_ADD, nếu tôi đặt $order_item->setUnitPrice($price, TRUE); các mặt hàng giống hệt nhau được thêm vào giỏ hàng được thêm dưới dạng các mặt hàng đặt hàng mới, nhưng tôi muốn chúng được hợp nhất.

Nếu tôi nhận xét dòng này trong mã của mình, các mục sẽ được hợp nhất như mong đợi và số lượng của chúng được tính tổng.

Làm cách nào để đặt đơn giá mà các mục đơn hàng không được coi là các mục đơn hàng riêng biệt?

Mã có liên quan của sự kiện CART_ENTITY_ADD:

chức năng công cộng addToCart(CartEntityAddEvent $event) {
    $order_item = $event->getOrderItem();
    //cập nhật đơn hàng
    $order_item->setUnitPrice($price, TRUE);
    $order_item->save();
}
No Sssweat avatar
lá cờ ua
Hãy để tôi xem toàn bộ hình ảnh. Bạn có thể đăng toàn bộ mã chạy trên sự kiện `CART_ENTITY_ADD` không?
thiokol avatar
lá cờ cn
Xin chào @No Sssweat - Tôi đã cập nhật câu hỏi của mình với mã đầy đủ. Tôi không nghĩ rằng hầu hết các mã có liên quan đến vấn đề này, như khi tôi xóa $order_item->setUnitPrice($price, TRUE); nó hoạt động như mong đợi và các mặt hàng và số lượng được hợp nhất. Tôi nghĩ chắc hẳn Commerce OrderItemMatcher không muốn hợp nhất các mặt hàng khi đơn giá được đặt như thế này?
Điểm:0
lá cờ ua

Hmmmmmmm chứ không phải order_item->save();, hãy thử sử dụng trình quản lý giỏ hàng

// lấy giỏ hàng
$cart_provider = \Drupal::service('commerce_cart.cart_provider');
$cart = $cart_provider->getCart('default');
//cập nhật giỏ hàng
$cart_manager = \Drupal::service('commerce_cart.cart_manager');
$order_item->setUnitPrice($price, TRUE);
$cart_manager->updateOrderItem($cart, $order_item);

Thưởng: Một số phương thức/hàm bạn có thể thấy hữu ích.

thiokol avatar
lá cờ cn
Cảm ơn vi đa trả lơi. Thay vào đó, tôi thực sự đã chuyển logic định giá thành một công cụ giải quyết giá. Đó có lẽ là nơi nó nên thuộc về. Mọi thứ hoạt động bình thường khi logic định giá được chuyển ra khỏi sự kiện CART_ENTITY_ADD và vào trình giải quyết giá.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.