如果您想知道如何从购物车中获取产品定制选项的价值并在Magento 2中订购,那么这是您学习的正确选择。本主题将指出如何使用以下两个示例来完成此操作。
首先,您可以使用ObjectManager
:
- 获取购物车中的产品的自定义选项
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$cart = $objectManager->get('\Magento\Checkout\Model\Cart');
// get cart items
$items = $cart->getItems();
// get custom options value of cart items
foreach ($items as $item) {
$options = $item->getProduct()->getTypeInstance(true)->getOrderOptions($item->getProduct());
$customOptions = $options['options'];
if (!empty($customOptions)) {
foreach ($customOptions as $option) {
$optionTitle = $option['label'];
$optionId = $option['option_id'];
$optionType = $option['type'];
$optionValue = $option['value'];
}
}
}
- 检索任何订单的产品的自定义选项
$orderObject = $objectManager->get('\Magento\Sales\Model\Order');
// load by order id
$orderId = 1; // YOUR ORDER ID
$order = $orderObject->load($orderId);
// load by order increment id
// $incrementId = '000000001'; // YOUR ORDER INCREMENT ID
// $order = $orderObject->loadByIncrementId($incrementId);
$items = $order->getAllVisibleItems(); // get all items aren't marked as deleted and that do not have parent item; for e.g. here associated simple products of a configurable products are not fetched
// Order items can also be fetched with the following functions
// $items = $order->getAllItems(); // get all items that are not marked as deleted
// $items = $order->getItems(); // get all items
foreach ($items as $item) {
$options = $item->getProductOptions();
if (isset($options['options']) && !empty($options['options'])) {
foreach ($options['options'] as $option) {
echo 'Title: ' . $option['label'] . '<br />';
echo 'ID: ' . $option['option_id'] . '<br />';
echo 'Type: ' . $option['option_type'] . '<br />';
echo 'Value: ' . $option['option_value'] . '<br />' . '<br />';
}
}
}
但是,ObjectManager
直接使用它并不是一个很好的解决方案。您仍然可以使用具有依赖注入的代码,如下所示:
- 打开块类
Mageplaza_HelloWorld
,然后\Magento\Sales\Model\Order
在我模块的块类的构造函数中注入对象。
应用程序/代码/ Mageplaza /的HelloWorld /块/ HelloWorld.php
<?php
namespace Mageplaza\HelloWorld\Block;
class HelloWorld extends \Magento\Framework\View\Element\Template
{
protected $_orderModel;
public function __construct(
\Magento\Backend\Block\Template\Context $context,
\Magento\Sales\Model\Order $orderModel,
array $data = []
)
{
$this->_orderModel = $orderModel;
parent::__construct($context, $data);
}
public function getOrderItems($orderId)
{
$order = $this->_orderModel->load($orderId);
return $order->getAllVisibleItems();
}
}
?>
- 像这样,您可以在
.phtml
文件中使用该功能。
$orderId = 1; // YOUR ORDER ID
$items = $block->getOrderItems($orderId);
foreach ($items as $item) {
$options = $item->getProductOptions();
if (isset($options['options']) && !empty($options['options'])) {
foreach ($options['options'] as $option) {
echo 'Title: ' . $option['label'] . '<br />';
echo 'ID: ' . $option['option_id'] . '<br />';
echo 'Type: ' . $option['option_type'] . '<br />';
echo 'Value: ' . $option['option_value'] . '<br />' . '<br />';
}
}
}
这就是您将用于在Magento 2中检索超值产品自定义选项购物车订单的所有内容。感谢您的阅读,如果有任何问题请在下面发表评论。