Jak uzyskać identyfikator produktu nadrzędnego w Magento 2?

11

Jak uzyskać identyfikator produktu nadrzędnego dziecka w Magento 2 dla produktów konfigurowalnych?

Chcę uzyskać identyfikator produktu nadrzędnego produktu podrzędnego w Magento na podstawie identyfikatora produktu podrzędnego.

Rafael Corrêa Gomes
źródło

Odpowiedzi:

26

Aby uzyskać identyfikator produktu nadrzędnego w pliku phtml, możesz wywołać kod bezpośrednio przez:

    $productId = 52; //this is child product id
    $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
    $product = $objectManager->create('Magento\ConfigurableProduct\Model\ResourceModel\Product\Type\Configurable')->getParentIdsByChild($productId);
     if(isset($product[0])){
         //this is parent product id..
         echo $product[0];
    }
Rakesh Jesadiya
źródło
działa dobrze w pliku widoku.
7
Nie należy używać katalogu menedżera obiektów. Wstrzyknij fabrykę przy użyciu -> metody tworzenia
CarComp
@Rakesh po uzyskaniu identyfikatora produktu konfigurowalnego w jaki sposób mogę uzyskać tylko wszystkie szczegóły dotyczące konkretnego produktu konfigurowalnego? Czy mogę załadować model produktu za pomocą identyfikatora produktu nadrzędnego?
Sanjay Gohil
12

Możesz wywołać go w pliku blokowym, w sposób specyficzny dla Magento,

protected $_catalogProductTypeConfigurable;

public function __construct(
    \Magento\Catalog\Block\Product\Context $context,
    //for getting parent id of simple
    \Magento\ConfigurableProduct\Model\ResourceModel\Product\Type\Configurable $catalogProductTypeConfigurable,
    array $data = []
) {
    //for getting parent id of simple
    $this->_catalogProductTypeConfigurable = $catalogProductTypeConfigurable;
    parent::__construct($context, $data);
}

public function getProductData($id) {
    $parentByChild = $this->_catalogProductTypeConfigurable->getParentIdsByChild($id);
    if (isset($parentByChild[0])) {
        //set id as parent product id...
        $id = $parentByChild[0];
    }
    return $id;
}
Rakesh Jesadiya
źródło
Nie określono klasy nadrzędnej! Myślę, że to Magento\Catalog\Block\Product\AbstractProduct???
Imran Zahoor