Получите ярлык опции и стоимость Простого продукта с настраиваемыми опциями


Я знаю, как получить настраиваемые параметры с помощью этого кода ниже:

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();

$product = $objectManager->get('Magento\Framework\Registry')->registry('current_product');//get current product


foreach ($product->getOptions() as $options) {
     $optionData = $options->getValues();
     foreach ($optionData as $data) {
            print_r($data->getData());
            echo   $optionPrice[] = $data->getPrice();
            echo $optionDuration[] = $data->getTitle();
     }
}

Но я не знаю, как получить option_type_id этого продукта. Я хочу знать, какой вариант этого продукта был выбран, как: Size : 10 kg в выбранном 10kg,20kg,30kg.

Author: Nero Phung, 2017-12-12

2 answers

Я думаю, что вы ищете $product->getOptions()[0]->getValues()[0]->getOptionTypeId()

 1
Author: Andrey Konosov, 2017-12-15 10:21:33

Наконец, я нашел свой собственный ответ. Приведенный ниже код получит массив, содержащий метку и значение настраиваемого продукта.

public function getCustomizableOption($item) {
        /**
         * @var $product \Magento\Catalog\Api\Data\ProductInterface
         */
        $product = $item->getProduct();
        $options = $product->getOptions();
        $responseData = [];
        $optionIds = explode(',',$product->getCustomOptions()['option_ids']->getData('value'));
        $optionTypeIds = [];
        foreach ($optionIds as $id) {
            array_push($optionTypeIds,$product->getCustomOptions()['option_'.$id]->getData('value'));
        }
        $i = 0;
        foreach ($options as $option) {
            $optionData = $option->getValues();
            foreach ($optionData as $data) {
                if (in_array($data->getData('option_type_id'),$optionTypeIds)) {
                    array_push($responseData,array('label' => $product->getData('options')[$i++]->getData('title'), 'value' => $data->getData('title')));
                    break;
                }
            }
        }
        return $responseData;
    }

Надеюсь, это поможет тем, у кого есть такой же вопрос ко мне.

 0
Author: Nero Phung, 2017-12-15 12:49:32