Magento2: So erhalten Sie die Produkt-ID für mein benutzerdefiniertes Modul

11

Ich bin neu in magento2 und baue derzeit ein benutzerdefiniertes Modul und möchte das Produkt ID/SKUaus dem Katalog erhalten. Ich versuche, mit einer Funktion im Block-Ordner aufzurufen. Bitte beraten!

ming
quelle

Antworten:

35

Versuche dies:

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

ODER

Fügen Sie der Blockdatei den folgenden Code hinzu.

zum Beispiel 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');
    }   

}
?>

Drucken der aktuellen Produktdaten in Ihrer Vorlagendatei (custom.phtml)

if ($currentProduct = $block->getCurrentProduct()) {
    echo $currentProduct->getName() . '<br />';
    echo $currentProduct->getSku() . '<br />';
    echo $currentProduct->getId() . '<br />';       
}
Abdul
quelle
Das funktioniert wie ein Zauber! Haben Sie etwas dagegen, über diese Registrierung zu erklären? Gibt es einen Entwicklerleitfaden in diesem Bereich?
Ming
2
Gibt es eine andere Methode, um die Produkt-ID neben der Registrierung abzurufen?
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();
?>

Das funktioniert bei mir.

.

Deepak Bhatta
quelle
Verwenden Sie den Objektmanager nicht direkt
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;
?>                                                                          

Verwenden Sie diesen Code, um die aktuelle Produkt-ID abzurufen

chris
quelle
0

Du könntest es versuchen $product = $this->abstractProduct->getProduct();

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

hat für mich gearbeitet :)

Fudu
quelle
Es funktioniert nicht für die Produktliste Seite
Amit Naraniwal
-3

Versuche dies:

<?php  
   $productId = 8;
   $objectManager =  \Magento\Framework\App\ObjectManager::getInstance();
   $currentproduct = $objectManager->create('Magento\Catalog\Model\Product')->load($productId);
   echo $currentproduct->getName(); 
?>
Dandy
quelle
Hey, danke für die Antwort! Ich glaube, ich habe meine Frage falsch formuliert. Meine aktuellen Module sind nur Zusatzinformationen für das Produkt. Was ich wirklich gemeint habe, ist, wie ich die ID des aktuellen Seitenprodukts erhalte. beispielsweise in „localhost / test / Produkt-A.html“ wie kann ich die ID für dieses spezielle Produkt abrufen
ming
Ich bekomme Klasse 'Magento \ Framework \ App \ ObjectManager nicht gefunden
Sushivam
Ich versuche, in mein benutzerdefiniertes Modell zu gelangen als: $ productId = 1; $ objectManager = \ Magento \ Framework \ App \ ObjectManager :: getInstance (); $ currentproduct = $ objectManager-> create ('Vendor \ Module \ Model \ Queue') -> load ($ productId); echo '<pre>'; print_r ($ currentproduct-> getEntityId ()); die; Ich bekomme einen Anruf an dispatch () auf null ..pls Hilfe
Sushivam
So erhalten Sie dynamisch die $ productId = 8;
Sushivam