bestit / commercetools-odm-bundle
通过 doctrine.commons api 使 commercetools 数据库可访问。
1.0.0
2020-02-10 08:50 UTC
Requires
- php: ^7.2.5
- bestit/commercetools-odm: ^1.0
- symfony/dependency-injection: ^3.1 || ^4.0 || ^5.0
- symfony/http-kernel: ^3.1 || ^4.0 || ^5.0
- symfony/yaml: ^3.1 || ^4.0 || ^5.0
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-22 19:38:35 UTC
README
通过 doctrine.commons api 使 commercetools 数据库可访问。它仍然在底层使用 commmercetools/php-sdk。
安装
步骤 1: 下载包
打开命令行控制台,进入您的项目目录,然后执行以下命令以下载此包的最新稳定版本
$ composer require bestit/commercetools-odm-bundle
此命令要求您已全局安装 Composer,如 Composer 文档中的 安装章节 所述。
步骤 2: 启用包
然后,通过将其添加到项目 app/AppKernel.php
文件中注册的包列表中启用该包。
<?php // app/AppKernel.php // ... class AppKernel extends Kernel { public function registerBundles() { $bundles = array( // ... new BestIt\CommercetoolsODMBundle\BestItCommercetoolsODMBundle(), ); // ... } // ... }
步骤 3: 配置包
# Default configuration for "BestItCommercetoolsODMBundle"
bestit_commercetools_odm:
# Please provide the service id for your commercetools client.
client_service_id: ~ # Required
# Please provide the service id for your commercetools request async pool.
pool_service_id: ~
此包包含一个客户端工厂,您可以使用它来创建客户端。示例
services:
Commercetools\Core\Client:
factory: 'BestIt\CommercetoolsODMBundle\Factory\ClientFactory:create'
arguments:
- {client_id: '%env(COMMERCETOOLS_CLIENT_ID)%', client_secret: '%env(COMMERCETOOLS_CLIENT_SECRET)%', project: '%env(COMMERCETOOLS_PROJECT)%', scope: ['manage_project'] }
- {locale: 'de', languages: ['de'] }
BestIt\CommercetoolsODMBundle\Factory\ClientFactory:
class: BestIt\CommercetoolsODMBundle\Factory\ClientFactory
arguments: ['@cache.app', '@logger']
用法
带有服务容器的事件监听器
如果您将服务标记为 best_it_commercetools_odm.event_listener,则可以向典型生命周期事件添加事件监听器。但不要忘记在您的标记中使用键 event 的事件名称。
示例
# app/config/services.yml services: app.tokens.action_listener: class: AppBundle\EventListener\TokenListener arguments: ['%tokens%'] tags: - { name: best_it_commercetools_odm.event_listener, event: postPersist }
服务的方法应与事件名称匹配。
服务
服务 best_it.commercetools_odm.manager 提供了扩展的 Doctrine\Common\Persistence\ObjectManager。
服务的方法应与事件名称匹配。
过滤器
您可以在请求上添加多个过滤器。只需创建一个过滤器,实现 FilterInterface,并使用 best_it_commercetools_odm.filter 标记服务。过滤器将获取原始创建的请求,并在请求发送之前应用。
示例
// ProductFilter.php class ProductFilter implements FilterInterface { /** * {@inheritdoc} */ public function getKey() { return 'product'; } /** * {@inheritdoc} */ public function apply($request) { $request->setExpands(['masterVariant.attributes[*].value', 'productType', 'categories[*].ancestors[*]']); $request->channel('xyz'); $request->currency('EUR'); } }
# app/config/services.yml services: app.filter.product_filter: class: AppBundle\Filter\ProductFilter tags: - { name: best_it_commercetools_odm.filter }
现在您可以在需要时应用一个或多个过滤器。
app.repository.product_projection: class: BestIt\CommercetoolsODM\Model\ProductProjectionRepository factory: ["@best_it.commercetools_odm.manager", getRepository] arguments: - Commercetools\Core\Model\Product\ProductProjection calls: - [filter, ['projection', 'projection-categories']]