Magento2 如何从magento 2中的产品id获取产品信息

Magento2 如何从magento 2中的产品id获取产品信息,magento2,Magento2,我想从magento 2中的产品id中获取价格,对于我们使用以下代码但不起作用的所有产品类型的特殊价格 <?php namespace Namespace\Module\Model; use Magento\Framework\Model\AbstractModel; use Magento\Framework\Model\Context; use Magento\Store\Model\ScopeInterface; use Magento\Catalog\Model\Reso

我想从magento 2中的产品id中获取价格,对于我们使用以下代码但不起作用的所有产品类型的特殊价格

    <?php
namespace Namespace\Module\Model;

use Magento\Framework\Model\AbstractModel;
use Magento\Framework\Model\Context;
use Magento\Store\Model\ScopeInterface;
use Magento\Catalog\Model\ResourceModel\Product\CollectionFactory as ProductCollectionFactory;
use Namespace\Module\Model\ResourceModel\Subscription\CollectionFactory as SubscriptionCollectionFactory;

class Observer extends AbstractModel{

      protected $_storeManager;
      protected $_productCollectionFactory;
      protected $_objectManager;
      protected $_currency;

      public function __construct(
    Context $context,
    \Magento\Store\Model\StoreManagerInterface $storeManager,
        \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
    \Magento\Framework\ObjectManagerInterface $objectManager,
    ProductCollectionFactory $productCollectionFactory,
    SubscriptionCollectionFactory $subscriptionCollectionFactory,
    \Magento\Directory\Model\Currency $currency
     ) 
     {  
    $this->_scopeConfig = $scopeConfig;
    $this->_storeManager = $storeManager;   
    $this->_objectManager = $objectManager;
    $this->_productCollectionFactory = $productCollectionFactory;
        $this->subscriptionCollectionFactory  = $subscriptionCollectionFactory;
    $this->_currency = $currency;
     }

     public function sendalert() { 

    $data = $this->subscriptionCollectionFactory->create()
        ->addFieldToSelect('*')
        ->addFieldToFilter('subscription_status', 0);



    $collection = $this->_productCollectionFactory->create()
              ->addAttributeToFilter('status', 1)
              ->addAttributeToFilter('visibility', 4)
              ->addAttributeToSelect('*');
    $prodIds = $collection->getAllIds();



    foreach($prodIds as $productId)
    {
        $om =   \Magento\Framework\App\ObjectManager::getInstance();
        $pdata = $this->_objectManager()->create('Magento\Catalog\Model\Product')->load($productId);
        echo '>>'.$pdata->getPrice();
    }

      }


}

Magento 2中的
建议为此使用服务层。尝试使用\Magento\Catalog\Model\ProductRepository::getById方法按id获取产品

试试下面的代码

$prod_id = "Your product id goes here";
$om =   \Magento\Framework\App\ObjectManager::getInstance();
$pdata = $om->create('Magento\Catalog\Model\Product')->load($prod_id);

在Magento 2中,建议为此使用服务层。尝试使用\Magento\Catalog\Model\ProductRepository::getById方法按id获取产品

试试下面的代码

$prod_id = "Your product id goes here";
$om =   \Magento\Framework\App\ObjectManager::getInstance();
$pdata = $om->create('Magento\Catalog\Model\Product')->load($prod_id);

以下代码适用于我

$objectManager=\Magento\Framework\App\objectManager::getInstance();
$productObject=$objectManager->create('Magento\Catalog\Model\Product');

$product=$productObject->load('enter product id')以下代码适用于我

$objectManager=\Magento\Framework\App\objectManager::getInstance();
$productObject=$objectManager->create('Magento\Catalog\Model\Product');
$product=$productObject->load('enter product id')试试这个

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

试试这个

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

其他答案告诉您直接使用
ObjectManager
,但您不应该这样做,因为您需要解决模式的问题
ObejctManager
仅应在引导过程中使用,或者如果您确实有理由使用它

更好的方法是使用
\Magento\Catalog\Model\ProductRepository::getById
方法。您可以像使用其他构造函数参数一样,使用自动构造函数注入来注入
ProductRepository

$productRepository; 
public function __construct(
    Context $context,
    \Magento\Catalog\Api\ProductRepositoryInterface $pr
    // ...
    ) 
{  
    $this->productRepository = $pr;
    // ....
}
然后使用

$productRepository->getById(1234);

如果您需要关于如何使用存储库的更多信息,也许会对您有所帮助。

其他答案告诉您直接使用
ObjectManager
,但您不应该这样做,因为您需要解决模式的问题
ObejctManager
仅应在引导过程中使用,或者如果您确实有理由使用它

更好的方法是使用
\Magento\Catalog\Model\ProductRepository::getById
方法。您可以像使用其他构造函数参数一样,使用自动构造函数注入来注入
ProductRepository

$productRepository; 
public function __construct(
    Context $context,
    \Magento\Catalog\Api\ProductRepositoryInterface $pr
    // ...
    ) 
{  
    $this->productRepository = $pr;
    // ....
}
然后使用

$productRepository->getById(1234);
如果您需要有关如何使用存储库的更多信息,也许会对您有所帮助。

请尝试下面的内容

use Magento\Catalog\Model\ProductFactory;
/**
 * @var ProductFactory
 */
protected $_modelProductFactory;
public function __construct(
    ...      
    ProductFactory $modelProductFactory,  
    ...
)
{           
    $this->_modelProductFactory = $modelProductFactory; 
    ...
}

public function getProductInformation($productId)
{
    return $this->_modelProductFactory->create()->load($productId);
}
试试下面

use Magento\Catalog\Model\ProductFactory;
/**
 * @var ProductFactory
 */
protected $_modelProductFactory;
public function __construct(
    ...      
    ProductFactory $modelProductFactory,  
    ...
)
{           
    $this->_modelProductFactory = $modelProductFactory; 
    ...
}

public function getProductInformation($productId)
{
    return $this->_modelProductFactory->create()->load($productId);
}
使用ObjectManager

<?php $product_id = 45; // product id
    $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
    $product = $objectManager->create('Magento\Catalog\Model\Product')->load($product_id);
?>

采用工厂法

<?php
namespace Test\Module\Block;

class Product extends \Magento\Framework\View\Element\Template
{

  protected $_productloader;  


  public function __construct(
        \Magento\Framework\View\Element\Template\Context $context,
        \Magento\Catalog\Model\ProductFactory $_productloader

    ) {


    ) {


        $this->_productloader = $_productloader;
        parent::__construct($context);
    }
    public function getLoadProduct($id)
    {
        return $this->_productloader->create()->load($id);
    }

}
        $this->_productloader = $_productloader;
        parent::__construct($context);
    }
    public function getLoadProduct($id)
    {
        return $this->_productloader->create()->load($id);
    }

}
使用ObjectManager

<?php $product_id = 45; // product id
    $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
    $product = $objectManager->create('Magento\Catalog\Model\Product')->load($product_id);
?>

采用工厂法

<?php
namespace Test\Module\Block;

class Product extends \Magento\Framework\View\Element\Template
{

  protected $_productloader;  


  public function __construct(
        \Magento\Framework\View\Element\Template\Context $context,
        \Magento\Catalog\Model\ProductFactory $_productloader

    ) {


    ) {


        $this->_productloader = $_productloader;
        parent::__construct($context);
    }
    public function getLoadProduct($id)
    {
        return $this->_productloader->create()->load($id);
    }

}
        $this->_productloader = $_productloader;
        parent::__construct($context);
    }
    public function getLoadProduct($id)
    {
        return $this->_productloader->create()->load($id);
    }

}

的可能副本的可能副本但在异常中显示此错误。日志:-main.CRITICAL:exception'Magento\Framework\exception\LocalizedException',并在/var/www/html/magento23/vendor/Magento/Framework/App/State.php:139中显示此错误。日志:-main.CRITICAL:exception在/var/www/html/magento23/vendor/Magento/Framework/App/State.php:139中显示消息“未设置区号”的“Magento\Framework\Exception\LocalizedException”,但显示此错误:-main.CRITICAL:Exception“Magento\Framework\Exception\LocalizedException”以及消息“未设置区号”/var/www/html/magento25/vendor/magento/framework/App/State.php:139如果您不是在开发者模式下运行,请清除生成文件夹和缓存:
rm-rf var/generation/*var/cache/*
。您能解释一下什么是merchant beta吗?在稳定版本2.0.0之前已经发布过的magento 2的公开版本,但出现了以下错误:-main.CRITICAL:exception'Magento\Framework\exception\LocalizedException',在/var/www/html/magento25/vendor/Magento/Framework/App/State.php:139如果您不是在开发者模式下运行,请清除生成文件夹并清除缓存:
rm-rf var/generation/*var/cache/*
。您能解释一下什么是商家测试版吗在稳定版本2.0.0之前实现的Magento 2的公开发行版欢迎使用堆栈溢出。请对答案再加解释。每个答案都必须有一个充分的解释在这个网站上。欢迎使用堆栈溢出。请对答案再加解释。每个答案都必须在本网站上有充分的解释。