Magento2: come ottenere l'ID prodotto sul mio modulo personalizzato


11

Sono nuovo di Magento2 e attualmente sto costruendo un modulo personalizzato e voglio ottenere il prodotto ID/SKUdal catalogo. Sto provando a chiamare usando una funzione situata nella cartella Block. si prega di avvisare!

Risposte:


36

Prova questo:

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

Aggiungi il codice qui sotto nel tuo file di blocco.

per esempio 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');
    }   

}
?>

Stampa dei dati del prodotto corrente nel file modello (custom.phtml)

if ($currentProduct = $block->getCurrentProduct()) {
    echo $currentProduct->getName() . '<br />';
    echo $currentProduct->getSku() . '<br />';
    echo $currentProduct->getId() . '<br />';       
}

Funziona come un incantesimo! Ti dispiace spiegare su questo registro ?? c'è una guida per gli sviluppatori su quest'area ??
Ming

2
Esiste un metodo alternativo per separare l'ID prodotto dal 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();
?>

Questo funziona per me.

.


non usare direttamente il gestore oggetti
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;
?>                                                                          

utilizzare questo codice per ottenere l'ID prodotto corrente


0

Potresti provare $product = $this->abstractProduct->getProduct();

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

ha funzionato per me :)


non funziona per la pagina di elenco dei prodotti
Amit Naraniwal,

-3

Prova questo:

<?php  
   $productId = 8;
   $objectManager =  \Magento\Framework\App\ObjectManager::getInstance();
   $currentproduct = $objectManager->create('Magento\Catalog\Model\Product')->load($productId);
   echo $currentproduct->getName(); 
?>

Ehi, grazie per la risposta! Penso di aver formulato la mia domanda in modo errato. I miei moduli attuali sono solo un'aggiunta di informazioni per il prodotto, quello che volevo dire veramente è come ottenere l'ID del prodotto della pagina corrente? esempio, in "localhost / test / product-A.html" come posso recuperare l'ID per questo particolare prodotto
ming

ottengo la classe 'Magento \ Framework \ App \ ObjectManager non trovata
Sushivam

sto cercando di entrare nel mio modello personalizzato come: $ productId = 1; $ objectManager = \ Magento \ Framework \ App \ ObjectManager :: getInstance (); $ currentproduct = $ objectManager-> create ('Vendor \ Module \ Model \ Queue') -> load ($ productId); echo '<pre>'; print_r ($ currentproduct-> getEntityId ()); die; ricevo la chiamata a dispatch () su null ..pls aiuto
Sushivam

Come ottenere dinamicamente $ productId = 8;
Sushivam,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.