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!

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

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.

.


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


0

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

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

bekerja untuk saya :)


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

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.