Magento2: Cómo obtener la identificación del producto en mi módulo personalizado

11

Soy nuevo en magento2 y actualmente estoy construyendo un módulo personalizado y quiero obtener el producto ID/SKUdel catálogo. Estoy tratando de llamar usando una función ubicada en la carpeta Bloquear. ¡por favor avise!

ming
fuente

Respuestas:

36

Prueba esto:

<?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();
?>

O

Agregue el siguiente código en su archivo de bloque.

por ejemplo 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');
    }   

}
?>

Impresión de datos actuales del producto en su archivo de plantilla (custom.phtml)

if ($currentProduct = $block->getCurrentProduct()) {
    echo $currentProduct->getName() . '<br />';
    echo $currentProduct->getSku() . '<br />';
    echo $currentProduct->getId() . '<br />';       
}
Abdul
fuente
Esto funciona como un encanto! ¿Te importaría explicar sobre este registro? ¿hay una guía para desarrolladores en esta área?
ming
2
¿Existe algún método alternativo para obtener la identificación del producto aparte del registro?
Sushivam
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();
?>

Esto funciona para mi.

.

Deepak Bhatta
fuente
no use el administrador de objetos directamente
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;
?>                                                                          

use este código para obtener la identificación actual del producto

Chris
fuente
0

Tu podrías intentar $product = $this->abstractProduct->getProduct();

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

trabajó para mi :)

fudu
fuente
no funciona para la página de listado de productos
Amit Naraniwal
-3

Prueba esto:

<?php  
   $productId = 8;
   $objectManager =  \Magento\Framework\App\ObjectManager::getInstance();
   $currentproduct = $objectManager->create('Magento\Catalog\Model\Product')->load($productId);
   echo $currentproduct->getName(); 
?>
Dandy
fuente
¡Hey, gracias por la respuesta! Creo que he formulado mal mi pregunta. Mis módulos actuales son solo un complemento de información para el producto, lo que realmente quise decir es que ¿cómo obtengo la ID del producto de la página actual? ejemplo, en "localhost / test / producto-A.html" ¿Cómo puedo recuperar el ID de este producto en particular
ming
me sale Class 'Magento \ Framework \ App \ ObjectManager no encontrado
Sushivam
Estoy tratando de entrar en mi modelo personalizado como: $ productId = 1; $ objectManager = \ Magento \ Framework \ App \ ObjectManager :: getInstance (); $ currentproduct = $ objectManager-> create ('Vendor \ Module \ Model \ Queue') -> load ($ productId); echo '<pre>'; print_r ($ currentproduct-> getEntityId ()); die; recibo una llamada para despachar () en null ..pls help
Sushivam
Cómo obtener dinámicamente $ productId = 8;
Sushivam