2016-01-20 149 views

回答

0

请尝试以下代码。它可能会帮助你。

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

你不应该使用对象管理器,除非你真的有这方面的原因。更好地使用依赖注入,请参阅文档:http://devdocs.magento.com/guides/v2.0/extension-dev-guide/depend-inj.html – bpoiss

+0

你是绝对正确的。感谢宝贵的答复。 –

+0

如何在没有静态值的情况下动态获取产品ID –

2

为此,最好使用Service Layer在Magento 2.

protected $_productRepository; 

public function __construct(
    ... 
    ... 
    \Magento\Catalog\Model\ProductRepository $productRepository, 
    ... 
) 
{ 
    $this->_productRepository = $productRepository; 
    ... 
    ... 
} 

public function getProductById($id) 
{ 
    return $this->_productRepository->getById($id); 
} 
0
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); 
} 
0

如果你wan't得到的只是一对夫妇的有关产品的属性,并希望避免加载该产品,你可以使用一个集合来做到这一点。刚刚注入类\Magento\Catalog\Model\ResourceModel\Product\CollectionFactory 像这样:

public function __construct(
    Context = $context, 
    //... 
    \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $collectionFactory, 
    //... 
    array $data = [] 
) { 
    $this->_collection = $collectionFactory(); 
    parent::__construct($context, $data); 
} 

,然后创建一个简单的集合是这样的:

$productID = 10; 
$product = $this->_collection 
    ->create() 
    ->addAttributeToSelect(['some_attribute']) 
    ->addAttributeToFilter('entity_id', $productID) 
    ->getFirstItem(); 
return $product->getSomeAttribute(); 
相关问题