Wie erhalte ich die übergeordnete Produkt-ID in Magento 2?

11

Wie erhalte ich die übergeordnete Produkt-ID eines Kindes in Magento 2 für die konfigurierbaren Produkte?

Ich möchte die übergeordnete Produkt-ID des untergeordneten Produkts in Magento basierend auf der untergeordneten Produkt-ID abrufen.

Rafael Corrêa Gomes
quelle

Antworten:

26

Um die übergeordnete Produkt-ID in Ihrer HTML-Datei abzurufen, können Sie den Code direkt aufrufen, indem Sie:

    $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
quelle
Es funktioniert gut in der Ansichtsdatei.
7
Sie sollten das Objektmanagerverzeichnis nicht verwenden. Injizieren Sie eine Fabrik mit der -> create-Methode
CarComp
@ Rakesh nach Erhalt der konfigurierbaren Produkt-ID Wie kann ich nur alle Details zu einem bestimmten konfigurierbaren Produkt abrufen? Kann ich das Produktmodell über die übergeordnete Produkt-ID laden?
Sanjay Gohil
12

Sie können es in Blockdatei auf Magento-spezifische Weise aufrufen,

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
quelle
Übergeordnete Klasse nicht angegeben! Ich denke es ist Magento\Catalog\Block\Product\AbstractProduct???
Imran Zahoor