Получить текущий настраиваемый идентификатор продукта в Magento 2


Если у меня есть настраиваемый продукт, и я выбираю красный цвет, то как я могу получить идентификатор выбранного виртуального продукта?

Мне нужно было бы делать это каждый раз, когда на странице продукта выбирается новый цвет, чтобы получить идентификатор нового выбранного виртуального продукта.

Спасибо!

Author: Amrit Pal Singh, 2017-07-19

1 answers

Предлагая решение, к которому я пришел, не уверен, что это лучший способ сделать это, но тем не менее работает.

При нажатии на опцию продукта вызовите функцию ajax с идентификатором продукта и идентификатором опции, которая выбрана в данный момент.

var id = <?php echo $_product->getId() ?>;
var option_id = $('.swatch-option.selected').attr('option-id');


$.ajax({
    url: "module_route/index/class_name",
    data: { id : id, option_id : option_id},
    type: "POST",
    success: function(result){
        console.log(result);
    }
}); 

В контроллере вашего модуля

namespace Module\Name\Controller\Index;
class StockLevel extends \Magento\Framework\App\Action\Action
{

    public function execute()
    {
        // Get info sent from ajax
        $id = $_POST['id'];
        $option_id = $_POST['option_id'];
        $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
        $product = $objectManager->get('Magento\Catalog\Model\Product')->load($id);
        $StockState = $objectManager->get('\Magento\CatalogInventory\Api\StockStateInterface');

        $productTypeInstance = $product->getTypeInstance();
        $usedProducts = $productTypeInstance->getUsedProducts($product);

        foreach ($usedProducts  as $child) {

            // get all the child info
            echo "<pre>";
            print_r($child->getData());
            echo "<pre>";

            $child_option = $child->getData('option you are comparing color ect');
            if ($child_option == $option_id) {
                $stock = $StockState->getStockQty($child->getId(), $child->getStore()->getWebsiteId());
                echo $stock;
            }
        }
    }
}
 3
Author: Nathaniel Meyer, 2017-07-21 00:06:38