我有一个自定义的symfony软件包,用于Akeneo 1.6(从前一段时间的1.3升级),我需要移植到Akeneo 2.2。
我需要的是在控制器操作中按产品ID获取所有产品数据。 这是通过 $ repository-> getFullProduct($ productId)完成的。该方法已在当前的Akeneo版本中删除。
在进行研究时,我发现“标准格式”似乎很有用,因为它包含所有产品数据作为数组。
如何接收这些数据?不一定是一个干净的解决方案,Quick&Dirty(就像整个捆绑包一样))就可以了。它仅供内部使用。
我尝试了诸如 $ productStandard = $ this-> container-> get('pim_api.normalizer.product')-> normalize($ product); 之类的东西,它们提供了不同的服务,但是基于我收到的无用的错误消息我认为这没有任何意义。
答案 0 :(得分:0)
在Akeneo PIM中搜索产品时,应使用产品查询生成器。您可以在the official documentation on querying products上了解更多有关它的信息。有人问了一个非常类似的问题,您可以在这里看到我的答案:Query products with Doctrine ind Akeneo。
要获取standard format of a product,可以使用规范化器对Product
实例进行规范化。
所以看起来像这样:
<?php
// Get a new instance of the PQB
$pqbFactory = $this->getContainer()->get('pim_catalog.query.product_query_builder_factory');
$pqb = $pqbFactory->create([
'default_locale' => 'en_US',
'default_scope' => 'ecommerce'
]);
// Now you can search for products with your ids
$pqb->addFilter(
'id',
'IN',
['234', '22', '90']
);
// Retrieve your products
$productsCursor = $pqb->execute();
$normalizedProducts = [];
foreach ($productsCursor as $product) {
// normalize them to the standard format
$normalizedProducts[] = $this->getContainer()->get('pim_standard_format_serializer')->normalize($product, 'standard');
}