我试图获得所有产品。我是这样做的:
$objectManager->get('Magento\Catalog\Model\Product')
->getCollection()
->addAttributeToSelect('*');
但只返回简单的产品。
通过sku获取NOT RETURNED产品可以正常工作:
$p = $objectManager->create('\Magento\Catalog\Model\ProductRepository')->get($sku);
有什么想法吗? 提前谢谢。
- Magento 2.2.0版
答案 0 :(得分:0)
Magento2有概念调用Factory,它是调用模型对象的后台。所以我认为在调用对象模型之前你应该使用新的工厂。
$objectManager->get('\Magento\Catalog\Model\ProductFactory')->create()
->getCollection()
->addAttributeToSelect('*');
答案 1 :(得分:0)
试试这个
在您的阻止文件中
<?php
namespace Mageplaza\HelloWorld\Block;
class HelloWorld extends \Magento\Framework\View\Element\Template
{
protected $_productCollectionFactory;
public function __construct(
\Magento\Backend\Block\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();
$collection->addAttributeToSelect('*');
return $collection;
}
}
?>
和你的.phtml文件
$productCollection = $block->getProductCollection();
foreach ($productCollection as $product) {
print_r($product->getData());
echo "<br>";
}
它还提供了分组和可配置的产品 它wikk为我工作请尝试这个
你也可以尝试这个链接: https://www.mageplaza.com/how-get-product-collection-magento-2.html