如何在Magento 2中获取模型和产品集合

5
如何在Magento 2中加载模型 像这样:
Mage::getModel('catalog/product')->load()

与我们在Magento 1中使用的方式相同。

2个回答

25

建议使用依赖注入而不是直接使用对象管理器。例如:在您的块文件中,您可以使用以下代码返回产品集合:

public function __construct(
        \Magento\Framework\View\Element\Template\Context $context,
        \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollectionFactory,
        array $data = []
    ) {

        $this->_productCollectionFactory = $productCollectionFactory;
        parent::__construct($context, $data);
    }
public function getProductCollection()
    {
        $collection = $this->_productCollectionFactory->create();
        return $collection;
    }

6
这是使用依赖注入的正确方法。 +1 - Manashvi Birla
嗨@Manashvi,我想获取这些product/cache/1d4ec593232a3f40f7a929d5b10820a2/u/g/ug03-bk-0.jpg图片。 - shivashankar m
@shivashankarm 首先,为什么?如果它已经在缓存中,如果您清除缓存,则URL已更改,其他所有内容也发生了变化。我猜您现在已经明白了,但是您不应该引用存储在缓存中的图像。 - John

22

尝试使用以下代码获取所有产品集合

<?php

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();

$productCollection = $objectManager->create('Magento\Catalog\Model\ResourceModel\Product\CollectionFactory');

$collection = $productCollection->create()
            ->addAttributeToSelect('*')
            ->load();

foreach ($collection as $product){
     echo 'Name  =  '.$product->getName().'<br>';
}  

?>

<?php $productId = 8; $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $currentproduct = $objectManager->create('Magento\Catalog\Model\Product')->load($productId); echo $currentproduct->getName(); ?> - Ashish Patel
它返回[]。为什么? - Mohammad Alfaz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接