0

我有一个在 Akeneo 1.6 中使用的自定义 symfony 包(前段时间从 1.3 升级),我需要将其移植到 Akeneo 2.2。

我需要的是在控制器操作中按产品 ID 获取所有产品数据。这是由$repository->getFullProduct($productId)完成的。此方法已在当前 Akeneo 版本中删除。

在研究时,我发现“标准格式”似乎很有帮助,因为它包含所有产品数据作为数组。

我怎样才能收到这些数据?它不必是一个干净的解决方案,Quick&Dirty(就像整个 Bundle ;) )就可以了。它仅供内部使用。

我尝试了一些类似的东西$productStandard = $this->container->get('pim_api.normalizer.product')->normalize($product); 提供不同的服务,但根据我收到的无用错误消息,我认为这没有意义。

4

1 回答 1

0

在 Akeneo PIM 中搜索产品时,您应该使用Product Query Builder。您可以在查询产品的官方文档中阅读更多相关信息。有人问了一个非常相似的问题,你可以在这里看到我的答案:Query products with Doctrine ind Akeneo

要获得产品的标准格式,您可以使用规范器规范化您的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');
}
于 2018-09-04T21:54:11.300 回答