Как получить идентификатор родительского продукта в magento 2?

11

Как получить идентификатор родительского продукта ребенка в Magento 2 для настраиваемых продуктов?

Я хочу получить идентификатор родительского продукта дочернего продукта в Magento на основе идентификатора дочернего продукта.

Рафаэль Корреа Гомес
источник

Ответы:

26

Для получения идентификатора родительского продукта в вашем phtml-файле вы можете вызвать код напрямую:

    $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];
    }
Ракеш Джесадия
источник
его нормально работает в виде файла.
7
Вы не должны использовать каталог диспетчера объектов. Внедрить фабрику, используя метод -> create
CarComp
@Rakesh после получения идентификатора настраиваемого продукта, как я могу получить только всю информацию о конкретном настраиваемом продукте? Могу ли я загрузить модель продукта через родительский идентификатор продукта?
Санджай Гохил
12

Вы можете назвать это в файле блока, 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;
}
Ракеш Джесадия
источник
Родительский класс не указан! Я думаю, что это Magento\Catalog\Block\Product\AbstractProduct???
Имран Захур