Magento2: Como obter a identificação do produto no meu módulo personalizado

11

Eu sou novo no magento2 e atualmente estou construindo um módulo personalizado e quero obter o produto ID/SKUdo catálogo. Estou tentando ligar usando uma função localizada na pasta Bloquear. Por favor informar!

ming
fonte

Respostas:

35

Tente o seguinte:

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

OU

Adicione o código abaixo no seu arquivo de bloco.

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

}
?>

Imprimindo dados atuais do produto em seu arquivo de modelo (custom.phtml)

if ($currentProduct = $block->getCurrentProduct()) {
    echo $currentProduct->getName() . '<br />';
    echo $currentProduct->getSku() . '<br />';
    echo $currentProduct->getId() . '<br />';       
}
Abdul
fonte
Isso funciona como um encanto! Você se importa de explicar sobre esse registro? existe um guia do desenvolvedor nessa área?
ming
2
Existe algum método alternativo para separar a identificação do produto do 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();
?>

Isso funciona para mim.

.

Deepak Bhatta
fonte
Não use o Gerenciador objeto diretamente
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 obter o ID do produto atual

chris
fonte
0

Você poderia tentar $product = $this->abstractProduct->getProduct();

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

trabalhou para mim :)

fudu
fonte
não o seu trabalho para o produto página listando
Amit Naraniwal
-3

Tente o seguinte:

<?php  
   $productId = 8;
   $objectManager =  \Magento\Framework\App\ObjectManager::getInstance();
   $currentproduct = $objectManager->create('Magento\Catalog\Model\Product')->load($productId);
   echo $currentproduct->getName(); 
?>
Dândi
fonte
Ei, obrigado pela resposta! Acho que formulou minha pergunta de maneira errada. Meus módulos atuais são apenas um complemento de informações sobre o produto. O que realmente quero dizer é que como obtenho o ID do produto da página atual? exemplo, em "localhost / test / produto-A.html" Como posso recuperar o id para este produto em particular
ming
Eu obtenho a classe Magento \ Framework \ App \ ObjectManager não encontrada
Sushivam
estou tentando entrar no meu modelo personalizado como: $ productId = 1; $ objectManager = \ Magento \ Framework \ App \ ObjectManager :: getInstance (); $ currentproduct = $ objectManager-> create ('Fornecedor \ Módulo \ Modelo \ Fila') -> load ($ productId); echo '<pre>'; print_r ($ currentproduct-> getEntityId ()); eu recebo chamada para dispatch () com a ajuda nula ..pls
Sushivam
Como obter dinamicamente o $ productId = 8;
Sushivam 23/08/16