Magento2: Cara mendapatkan id produk ke modul khusus saya

11

Saya baru mengenal magento2 dan saat ini saya sedang membangun modul khusus dan saya ingin mendapatkan produk ID/SKUdari katalog. Saya mencoba menelepon menggunakan fungsi yang ada di folder Block. mohon saran!

ming
sumber

Jawaban:

36

Coba ini:

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

ATAU

Tambahkan kode di bawah ini di file blok Anda.

sebagai contoh 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');
    }   

}
?>

Mencetak data produk saat ini di file template (custom.phtml) Anda

if ($currentProduct = $block->getCurrentProduct()) {
    echo $currentProduct->getName() . '<br />';
    echo $currentProduct->getSku() . '<br />';
    echo $currentProduct->getId() . '<br />';       
}
Abdul
sumber
Ini bekerja seperti pesona! Apakah Anda keberatan menjelaskan tentang registri ini ?? apakah ada panduan pengembang di area ini ??
ming
2
Apakah ada metode alternatif untuk mendapatkan id produk selain dari registri?
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();
?>

Ini bekerja untuk saya.

.

Deepak Bhatta
sumber
jangan gunakan manajer objek secara langsung
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;
?>                                                                          

gunakan kode ini untuk mendapatkan id produk saat ini

chris
sumber
0

Kamu bisa mencoba $product = $this->abstractProduct->getProduct();

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

bekerja untuk saya :)

fudu
sumber
itu tidak berfungsi untuk halaman daftar produk
Amit Naraniwal
-3

Coba ini:

<?php  
   $productId = 8;
   $objectManager =  \Magento\Framework\App\ObjectManager::getInstance();
   $currentproduct = $objectManager->create('Magento\Catalog\Model\Product')->load($productId);
   echo $currentproduct->getName(); 
?>
Pesolek
sumber
Hei, terima kasih atas jawabannya! Saya pikir saya salah mengutarakan pertanyaan saya. Modul saya saat ini hanyalah tambahan informasi untuk produk, apa yang sebenarnya saya maksudkan adalah bagaimana cara mendapatkan ID produk halaman saat ini? contoh, dalam "localhost / test / product-A.html" bagaimana saya bisa mengambil id untuk produk khusus ini
ming
saya mendapatkan Kelas 'Magento \ Framework \ App \ ObjectManager tidak ditemukan
Sushivam
Saya mencoba masuk ke Model kustom saya sebagai: $ productId = 1; $ objectManager = \ Magento \ Framework \ App \ ObjectManager :: getInstance (); $ currentproduct = $ objectManager-> create ('Vendor \ Module \ Model \ Queue') -> load ($ productId); echo '<pre>'; print_r ($ currentproduct-> getEntityId ()); die; saya mendapatkan panggilan untuk mengirim () pada null .. tolong bantu
Sushivam
Cara mendapatkan $ productId = 8 secara dinamis;
Sushivam