Magento2: Как получить идентификатор продукта в мой пользовательский модуль

11

Я новичок в magento2, и в настоящее время я создаю пользовательский модуль и хочу получить продукт ID/SKUиз каталога. Я пытаюсь позвонить с помощью функции, расположенной в папке «Блок». пожалуйста, порекомендуйте!

мина
источник

Ответы:

36

Попробуй это:

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

ИЛИ

Добавьте приведенный ниже код в файл блока.

например app/code/AR/CustomModule/Block/CustomBlock.php

<?php
namespace AR\CustomModule\Block;
class CustomBlock extends \Magento\Framework\View\Element\Template
{
    protected $_registry;

    public function __construct(
        \Magento\Backend\Block\Template\Context $context,       
        \Magento\Framework\Registry $registry,
        array $data = []
    )
    {       
        $this->_registry = $registry;
        parent::__construct($context, $data);
    }

    public function _prepareLayout()
    {
        return parent::_prepareLayout();
    }

    public function getCurrentCategory()
    {       
        return $this->_registry->registry('current_category');
    }

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

}
?>

Печать текущих данных о продукте в файле шаблона (custom.phtml)

if ($currentProduct = $block->getCurrentProduct()) {
    echo $currentProduct->getName() . '<br />';
    echo $currentProduct->getSku() . '<br />';
    echo $currentProduct->getId() . '<br />';       
}
Абдул
источник
Это работает как шарм! Вы не возражаете, объясняя об этом реестре? есть ли руководство для разработчиков в этой области?
мина
2
Есть ли альтернативный метод, чтобы получить идентификатор продукта отдельно от реестра?
Сушивам
0
<?php 
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$product = $objectManager->get('Magento\Framework\Registry')->registry('current_product');//get current product
echo $product->getId();
echo $product->getName();
?>

Это работает для меня.

,

Дипак Бхатта
источник
не используйте менеджер объектов напрямую
Lorenzo
0
<?php
     $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
     $productid = $this->getRequest()->getParam('id');                                       
     $product = $objectManager->create('Magento\Catalog\Model\Product')->load($productid);
     echo $product;
?>                                                                          

используйте этот код для получения текущего идентификатора продукта

Крис
источник
0

Вы могли бы попробовать $product = $this->abstractProduct->getProduct();

с \Magento\Catalog\Block\Product\AbstractProduct $abstractProduct

работал на меня :)

Fudu
источник
это не работает на странице с перечнем продуктов
Amit Naraniwal
-3

Попробуй это:

<?php  
   $productId = 8;
   $objectManager =  \Magento\Framework\App\ObjectManager::getInstance();
   $currentproduct = $objectManager->create('Magento\Catalog\Model\Product')->load($productId);
   echo $currentproduct->getName(); 
?>
Денди
источник
Эй, спасибо за ответ! Я думаю, что я неправильно сформулировал свой вопрос. Мои текущие модули - это просто дополнение к информации о продукте. Что я действительно имел в виду, так это как получить идентификатор продукта текущей страницы? Например, в «локальном / тесте / продукт-A.html» , как могу я получить идентификатор для данного конкретного продукта
мина
я получаю класс 'Magento \ Framework \ App \ ObjectManager не найден
Сушивам
я пытаюсь войти в мою пользовательскую модель как: $ productId = 1; $ objectManager = \ Magento \ Framework \ App \ ObjectManager :: getInstance (); $ currentproduct = $ objectManager-> create ('Vendor \ Module \ Model \ Queue') -> load ($ productId); echo '<pre>'; print_r ($ currentproduct-> getEntityId ()); die; я получаю призыв к dispatch () на ноль .. просьба помочь
Сушивам
Как динамически получить $ productId = 8;
Сушивам