Magento2: Özel modülüme ürün kimliği nasıl alınır


11

Ben magento2 için yeniyim ve şu anda özel bir modül inşa ediyorum ve ürünü ID/SKUkatalogdan almak istiyorum . Block klasöründe bulunan bir işlevi kullanarak aramaya çalışıyorum. tavsiye lütfen!

Yanıtlar:


36

Bunu dene:

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

VEYA

Blok dosyanıza feryat kodu ekleyin.

Örneğin 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');
    }   

}
?>

Şablonunuzdaki (custom.phtml) dosyanızdaki geçerli ürün verilerini yazdırma

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

Bu bir cazibe gibi çalışıyor! Bu kayıt defteri hakkında açıklıyor musunuz? bu alanda bir geliştirici kılavuzu var mı ??
ming

2
Ürün kimliğini kayıt defterinden ayırmanın başka bir yöntemi var mı?
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();
?>

Bu benim için çalışıyor.

.


nesne yöneticisini doğrudan kullanmayın
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;
?>                                                                          

geçerli ürün kimliğini almak için bu kodu kullanın


0

Deneyebilirsin $product = $this->abstractProduct->getProduct();

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

benim için çalıştı :)


Ürün listeleme sayfası için çalışmıyor
Amit Naraniwal

-3

Bunu dene:

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

Hey, cevap için teşekkürler! Sanırım sorumu yanlış ifade ettim. Mevcut modüllerim sadece ürün için bir eklenti, gerçekten demek istediğim şu anki sayfa ürününün kimliğini nasıl alabilirim? örnek, ben bu özel ürün için kimliği almak nasıl "localhost / test / ürün-A.html" in
ming

Sınıf 'Magento \ Framework \ App \ ObjectManager bulunamadı
Sushivam

im gibi benim özel Model almaya çalışırken: $ productId = 1; $ objectManager = \ Magento \ Framework \ App \ ObjectManager :: getInstance (); $ currentproduct = $ objectManager-> create ('Satıcı \ Modül \ Model \ Kuyruk') -> yükle ($ productId); echo '<pre>'; print_r ($ currentproduct-> getEntityId ()); ölmek; null ..pls yardım için dispatch () çağrısı alıyorum
Sushivam

$ ProductId = 8 dinamik olarak nasıl elde edilir;
Sushivam
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.