Magento2 如何从magento 2中的产品id获取产品信息
我想从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
<?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的公开发行版欢迎使用堆栈溢出。请对答案再加解释。每个答案都必须有一个充分的解释在这个网站上。欢迎使用堆栈溢出。请对答案再加解释。每个答案都必须在本网站上有充分的解释。