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

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

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

Щоб отримати поточну інформацію про продукт, вам потрібно використовувати Реєстр .

<?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

Якщо ви хочете отримати поточний ID продукту в Magento, ви можете використовувати наступний метод:

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

Ви також можете використовувати менеджер об'єктів.

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

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