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!

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

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.

.


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


0

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

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

hat für mich gearbeitet :)


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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.