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!

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 />';       
}

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.

.


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


0

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

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

trabajó para mi :)


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

¡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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.