Magento2:如何获取产品ID到我的自定义模块


11

我是magento2的新手,目前正在构建自定义模块,我想ID/SKU从目录中获取产品。我正在尝试使用位于Block文件夹中的函数进行调用。请指教!

Answers:


36

尝试这个:

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

要么

在您的阻止文件中添加下面的代码。

例如 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');
    }   

}
?>

在模板(custom.phtml)文件中打印当前产品数据

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

这就像一个魅力!您介意解释此注册表吗?在这方面有开发者指南吗?
2013年

2
是否有其他方法可以使产品ID与注册表分开?
Sushivam '16

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

这对我有用。


不要直接使用对象管理器
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;
?>                                                                          

使用此代码获取当前产品ID


0

你可以试试 $product = $this->abstractProduct->getProduct();

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

为我工作:)


它不适用于产品列表页面
Amit Naraniwal,

-3

尝试这个:

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

嘿,谢谢你的回复!我想我错了我的问题的话。我当前的模块只是该产品的附加信息,我真正的意思是我如何获取当前页面产品的ID?例如,在“ localhost / test / product-A.html”中,我如何检索此特定产品的ID

我得到类'Magento \ Framework \ App \ ObjectManager找不到
Sushivam '16

我试图进入我的自定义模型为:$ productId = 1; $ objectManager = \ Magento \ Framework \ App \ ObjectManager :: getInstance(); $ currentproduct = $ objectManager-> create('Vendor \ Module \ Model \ Queue')-> load($ productId); 回声'<pre>'; print_r($ currentproduct-> getEntityId()); die; 我在null ..pls帮助下接到dispatch()的电话
Sushivam,2016年

如何动态获取$ productId = 8;
Sushivam '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.