Получить значение пользовательской опции продукта в событии sales_quote_add_item - PullRequest
0 голосов
/ 05 мая 2020

Ниже показан мой код. Я вызываю sales_quote_add_item, чтобы изменить цену продукта в соответствии с индивидуальной опцией. Я хочу, чтобы он был добавлен администратором в корзину.

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
    <event name="sales_quote_add_item">
         <observer name="customprice" instance="Smartupworld\Core\Observer\Admin\Price" />
    </event>
</config>

Здесь я php наблюдатель

<?php
namespace Smartupworld\Core\Observer\Admin;

use Magento\Framework\Event\ObserverInterface;
use Magento\Framework\App\RequestInterface;

class Price implements ObserverInterface
{
    public function execute(\Magento\Framework\Event\Observer $observer) {

        //$product=$observer->getEvent()->getData('product');

        $item = $observer->getEvent()->getData('quote_item');           
        $item = ( $item->getParentItem() ? $item->getParentItem() : $item );
        $customOptions = $objectManager->get('Magento\Catalog\Model\Product\Option')->getProductOptionCollection($item->getProduct());

        $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 />';
                //$title[] = $option['label'];
            }
        }
        $price = 100;
        $item->setCustomPrice($price);
        $item->setOriginalCustomPrice($price);
        $item->getProduct()->setIsSuperMode(true);
}

Я не могу получить значение опции по цене. php файл. Я хочу изменить цену в соответствии со стоимостью опциона. Но я не могу этого понять.

1 Ответ

0 голосов
/ 05 мая 2020

используя это, я получаю данные опции:

$options = $item->getProduct()->getTypeInstance(true)->getOrderOptions($item->getProduct());
$customOptions = $options['options'];
$title = array();
if (!empty($customOptions)) 
{
    foreach ($customOptions as $key=>$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 />';    
    $title[] = $option['label'];
        //$title[] = $option['option_value'];
    }

    //$cart->getquote()->getItemById($item->getItemId())->setOptions($options);
    //$cart->save();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...