我正在尝试获取所有产品。我这样做:
$objectManager->get('MagentoCatalogModelProduct')
->getCollection()
->addAttributeToSelect('*');
但只退回简单的产品。
通过SKU获取未退回的产品工作正常:
$p = $objectManager->create('MagentoCatalogModelProductRepository')->get($sku);
知道吗?提前谢谢。
--Magento 版本 2.2.0
Magento2有概念调用工厂,它是调用模型对象的后台。所以我认为你应该在调用对象模型之前新建工厂。
$objectManager->get('MagentoCatalogModelProductFactory')->create()
->getCollection()
->addAttributeToSelect('*');
试试这个
在块文件中
<?php
namespace MageplazaHelloWorldBlock;
class HelloWorld extends MagentoFrameworkViewElementTemplate
{
protected $_productCollectionFactory;
public function __construct(
MagentoBackendBlockTemplateContext $context,
MagentoCatalogModelResourceModelProductCollectionFactory $productCollectionFactory,
array $data = []
)
{
$this->_productCollectionFactory = $productCollectionFactory;
parent::__construct($context, $data);
}
public function getProductCollection()
{
$collection = $this->_productCollectionFactory->create();
$collection->addAttributeToSelect('*');
return $collection;
}
}
?>
和您的 .phtml 文件
$productCollection = $block->getProductCollection();
foreach ($productCollection as $product) {
print_r($product->getData());
echo "<br>";
}
它还提供了分组和可配置的产品它为我工作,请尝试这个
您也可以尝试此链接:https://www.mageplaza.com/how-get-product-collection-magento-2.html