Як отримати поточний продукт в Magento 2?

Magento дозволяє створювати та налаштовувати 6 різних типів продуктів в адмін панелі. Кожен продукт має унікальну назву, ідентифікатор та інші пов’язані з ним деталі. Отже, після того, як ви навчитеся отримувати поточну категорію, ви повинні знати, як отримати поточний продукт в Magento 2.

Отримайте поточний продукт у Magento 2

Щоб отримати інформацію про поточний продукт, вам потрібно скористатися Registry.

<?php

namespace VendorName\ModuleName\Folder;

class Example
{
    private $registry;

    public function __construct(
           \Magento\Framework\Registry $registry
      ) {
           $this->registry = $registry;
      }

      public function getCurrentProduct()
      {
            return $this->registry->registry('current_product');
      }
}
?>

І тепер ви моежет використовувати матод getCurrentProduct():

// print current product data
if ($currentProduct = $example->getCurrentProduct()) {
echo $currentProduct->getName() . '<br />';
echo $currentProduct->getSku() . '<br />';
echo $currentProduct->getFinalPrice() . '<br />';
echo $currentProduct->getProductUrl() . '<br />';
print_r ($currentProduct->getCategoryIds()) . '<br />';
}

Отримайте ID поточного продукту в Magento 2

Якщо ви хочете отримати ідентифікатор поточного продукту в Magento, ви можете скористатися таким методом:

<?php
$currentProduct = $block->getCurrentProduct();
if ($currentProduct)
echo $currentProduct->getId();
} else {
echo 'There is no current product';
}
?>

Ви також можете використовувати object manager.

<?php
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$product = $objectManager->get(\Magento\Framework\Registry::class)->registry('current_product'); //get current product
echo $product->getId();
?>

Примітка: вам слід уникати безпосереднього використання ObjectManager у вашому коді, оскільки він приховує реальні залежності класу.