我正在尝试为所有(实际过滤的列表但不相关的)产品获取商店视图特定产品属性值:
<?php
/* @var \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $collectionFactory */
$collection = $collectionFactory->create()->setStoreId(3)->load();
foreach ($collection as $product) {
var_dump($product->getSku());
var_dump($product->getName());
}
SKU按预期返回(因为它是一般的)但产品名称不是 - 而是返回NULL
。
它在使用controller的adminhtml产品编辑builder中正常工作。唯一的区别是编辑控制器与Model\Product
模型一起工作;由于某种原因,集合与Model\Product\Interceptor
一起使用。
尝试使用Model\ProductFactory
在循环中加载每个产品(这是在编辑控制器中完成的方式) - 这样做$product->getName()
会返回相应的值(但是我无法获得其他相关的产品属性) 。当然,在循环中再次装载产品是错误的。
所以问题:对于给定的商店视图,检索产品和获取产品属性(描述,重量等)值的预期方式是什么?
答案 0 :(得分:8)
<?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>';
}
?>