以捆绑形式获取Akeneo PIM产品为标准格式

时间:2018-09-04 12:54:38

标签: symfony akeneo

我有一个自定义的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); 之类的东西,它们提供了不同的服务,但是基于我收到的无用的错误消息我认为这没有任何意义。

1 个答案:

答案 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');
}