Tùy thuộc vào mục đích tùy chỉnh của bạn. Order Order có các tùy chọn tùy chỉnh được lưu trữ dưới dạng mảng tuần tự hóa và bất cứ lúc nào bạn cũng có thể sửa đổi nó.
Không giống như mục báo giá, theo thứ tự mục có tên khác để truy xuất chúng. Phương pháp này được gọi là getProductOptions()
Ngoài ra còn có một phương pháp khác cho phép bạn đặt chúng setProductOptions(array $options)
.
Dưới đây là một số ví dụ về việc sử dụng phương pháp này trong các trường hợp thử nghiệm khác nhau:
Nếu bạn cần lưu trữ nó chỉ dành cho việc sử dụng mã nội bộ, bạn chỉ có thể thêm tùy chọn vào mảng mảng và đặt nó trở lại:
$existentOptions = $orderItem->getProductOptions();
$existentOptions['your_custom_option'] = $yourCustomValue;
$orderItem->setProductOptions($existentOptions);
Nếu bạn cần để hiển thị tùy chọn tùy chỉnh của bạn trong tài liệu in, bạn cần phải thêm tùy chọn tùy chỉnh của bạn vào tùy chọn đặc biệt các tùy chọn, có cấu trúc cho hiển thị giá trị của nó trên lối vào, tài liệu pdf, danh sách các mặt hàng
$existentOptions = $orderItem->getProductOptions();
if (!isset($existentOptions['additional_options'])) {
// If special options of options array is set before, create it.
$existentOptions['additional_options'] = array();
}
// Adding visible options value
$existentOptions['additional_options'][] = array(
'label' => 'Your Option Label',
'value' => 'Your Option Value',
// The last one that is optional (if not set, value is used)
'print_value' => 'Your Option Value shown in printed documents'
);
$orderItem->setProductOptions($existentOptions);
Cả hai phương pháp thậm chí có thể được kết hợp, nếu bạn cần một lựa chọn đó là có thể nhìn thấy khách hàng và một tùy chọn đó là cần thiết cho mã của bạn.
Cũng đừng quên lưu đơn đặt hàng/đơn đặt hàng của bạn sau khi bạn thực hiện các sửa đổi của mình.
Tư vấn
Nếu bạn lưu trật tự và đã không thay đổi về mô hình trật tự riêng của mình, bạn cần ít nhất thay đổi một số dữ liệu trong nó, để buộc mô hình để lưu tất cả các cơ quan địa. Để làm điều này có thể, bạn thậm chí có thể chỉ cần thiết lập một số thuộc tính không tồn tại.
Trường hợp khi lưu hoạt động sẽ không được áp dụng:
$order->load($id);
$orderItem->getItemById($itemId);
$orderItem->setSomething(111);
$order->save(); // Order Item will not be saved!!
Trường hợp khi lưu hoạt động sẽ được gọi:
$order->load($id);
$orderItem->getItemById($itemId);
$orderItem->setSomething(111);
$order->setSomeNonExistentProperty(true);
$order->save(); // Now it will be saved
Hãy vui vẻ với sự phát triển Magento
Nguồn
2012-07-27 14:08:11
Cảm ơn bạn rất nhiều. Tôi đã dành khoảng một tuần cho nhiệm vụ này. Nó hoạt động tốt. Cảm ơn một lần nữa – DRAJI
@ Ivan Chepurnyi: Tôi nghĩ rằng bạn cần phải tiết kiệm cũng từ "$ orderItem-> setProductOptions ($ existentOptions);" tới "$ orderItem-> setProductOptions ($ existentOptions) -> save();" –