commercetools/symfony-bundle

Commercetools平台的Symfony扩展包

0.4.7 2019-03-12 14:49 UTC

README

commercetools Symfony扩展包是一系列扩展包的集合,旨在简化在实现Symfony项目时使用commercetools PHP-SDK的过程。

目录

先决条件

Composer: 要安装Composer,请访问 https://getcomposer.org.cn/doc/00-intro.md

安装

您可以选择创建一个新的Symfony项目或使用现有的Symfony项目(3.4版本及以上)

使用以下命令创建一个新的Symfony项目

composer create-project symfony/skeleton <project-name>

接下来,导航到项目目录并运行以下命令

composer config extra.symfony.allow-contrib true

这将自动完成大部分配置,使用的是来自Symfony Flex的recipes-contrib扩展包。

接下来,安装commercetools Symfony扩展包。为此,请在命令行中运行以下命令

composer require commercetools/symfony-bundle

或者,打开composer.json文件,将"commercetools/symfony-bundle"添加到require属性中,并运行

composer install

接下来,打开.env文件或创建根目录下的.env.local文件,并编辑以下行以添加您的凭据。您可以从创建新API客户端时的商家的中心Commercetools Merchant Center > 设置 > 开发者设置中检索API客户端凭据。注意,出于安全原因,您无法检索过去创建的客户端的CTP_CLIENT_SECRET

CTP_CLIENT_ID=<your client id>
CTP_CLIENT_SECRET=<your client secret>
CTP_PROJECT_KEY=<your project id>
CTP_AUTH_URL=https://auth.commercetools.com
CTP_API_URL=https://api.commercetools.com
CTP_SCOPES=<your desired scopes>

或者,对于美国区域,将URL更改为

CTP_AUTH_URL=https://auth.commercetools.co
CTP_API_URL=https://api.commercetools.co

有关使用.env.env.local的更多信息,请参阅此处此处

验证配置

为了验证配置是否正常工作,在.env文件中添加您的客户端凭据后,在命令行中运行以下命令

bin/console commercetools:project-info

如果一切设置正确,这将返回您项目的详细信息。例如

Project's key: super-cool-project-4
Project's name: my eshop at commercetools
Countries: DE, US
Currencies: EUR
Languages: en
Created at: 2019-02-04T11:28:49+00:00
Messages: disabled

使用方法

commercetools Symfony扩展包由8个较小的扩展包组成(以下提到的依赖关系仅为额外的依赖关系,用于特定扩展包的功能)

  • CartBundle
  • CatalogBundle
  • CtpBundle
  • CustomerBundle
    • 依赖项: symfony/security-bundle
  • ReviewBundle
  • SetupBundle
    • 依赖项: symfony/console
  • ShoppingListBundle
  • StateBundle
    • 依赖项: symfony/consolesymfony/workflowtwig/extensions

默认情况下,CtpBundleCustomerBundle对所有环境都启用。SetupBundleStateBundle仅对开发环境启用。要查看启用了哪些扩展包以及可选地启用或禁用它们,请编辑config/bundles.php文件。

可用服务

主要思想是,在每一个Bundle中,都有一组可重用的服务,您可以直接将其注入到您的应用程序中。作为一个通用的模式,有几个*Manager服务,它们提供相关的操作。例如,在CartManager中,您将找到如getCartcreateCartForUserupdate等助手。update服务返回一个CartUpdateBuilder,您可以在其中动态构建更新操作。要在控制器操作中自动装配一个服务,例如CatalogManager,请执行以下操作

<?php
namespace App\Controller;

use Commercetools\Symfony\CatalogBundle\Manager\CatalogManager;
use Symfony\Component\HttpFoundation\Response;

class MyController
{
    public function index(CatalogManager $manager)
    {
        /** @var CategoryCollection $categories */
        $categories = $manager->getCategories('en');

        return new Response(
            '<html><body>categories: '
            // handle CategoryCollection $categories
            .'</body></html>'
        );
    }
}

服务列表

  • CartBundle:提供购物车、订单、支付和配送方式等辅助工具
    • CartManager
    • OrderManager
    • PaymentManager
    • ShippingMethodManager
  • CatalogBundle:提供产品、产品类型、产品投影、分类、产品搜索和维度的辅助工具
    • CatalogManager
    • Search
  • CtpBundle:提供其余Bundle所需的核心辅助工具。包括HTTP客户端工厂、自定义类型处理的自定义类型提供者、区域设置转换器、映射器工厂和上下文工厂
    • ClientFactory
    • ContextFactory
    • MapperFactory
    • LocaleConverter
    • CustomTypeProvider
  • CustomerBundle:提供用户和客户相关功能,包括集成的认证提供者
    • CustomerManager
    • AuthenticationProvider
    • UserProvider
  • ReviewBundle:提供评论的辅助工具
    • ReviewManager
  • ShoppingListBundle:提供购物清单的辅助工具
    • ShoppingListManager
  • StateBundle:提供处理行项目、订单、支付、产品和评论状态的辅助工具。它可以配置为工作流状态机,并负责状态之间的转换。
    • CtpMarkingStoreLineItemState
    • CtpMarkingStoreOrderState
    • CtpMarkingStorePaymentState
    • CtpMarkingStoreProductState
    • CtpMarkingStoreReviewState

控制台命令

SetupBundleStateBundle附带一些实用的控制台命令。这些命令在开发期间自动化任务,并允许在线项目和本地配置之间的双向同步。要使用控制台命令,请导航到您的项目目录并运行

bin/console commercetools:<command-name>

可用控制台命令

  • SetupBundle

    • bin/console commercetools:project-info:从commercetools平台获取并显示有关所选项目的信息
    • bin/console commercetools:project-apply-configuration:将位于commercetools键下的本地项目配置保存到在线commercetools平台
    • bin/console commercetools:create-custom-type:交互式CLI用于在您的项目中创建自定义类型
    • bin/console commercetools:sync-custom-types-from-server:将当前在线项目中存在的自定义类型保存到本地,在<PROJECT_DIR>/config/packages/<ENV>/custom_types.yaml文件中
    • bin/console commercetools:sync-custom-types-from-local:将本地<PROJECT_DIR>/config/packages/<ENV>/custom_types.yaml文件中存在的自定义类型保存或更新到您的在线commercetools项目中
  • StateBundle

    • bin/console commercetools:set-state-machine-config:从commercetools平台获取状态并在<PROJECT_DIR>/config/packages/<ENV>/workflow.yaml处创建一个Symfony state_machine类型配置文件

    • bin/console commercetools:set-workflow-config:从commercetools平台获取状态并在<PROJECT_DIR>/config/packages/<ENV>/workflow.yaml处创建一个Symfony workflow类型配置文件

      有关使用Symfony Workflows的更多信息,请参阅Symfony的文档

在Twig模板中使用SDK模型

如果您使用Twig作为您的模板引擎,您可以通过引用属性的路径和名称来打印任何SDK模型的嵌套属性的值。例如,以下两个都是有效的表示

{{ product.masterVariant.attributes.test.value }}
{{ attribute(product.masterVariant.attributes, 'custom-attribute').value }}

快速入门

要获取更详细的快速入门指南,您可以继续阅读

关于ExampleBundle的免责声明(开发版)

仓库中提供了一个名为 ExampleBundle 的示例,旨在展示如何使用其他 Bundles 实现一个样例电商网站。这个 ExampleBundle 目前正在开发中。它可能包含过时的代码,未经过充分测试,目前不建议在任何生产环境中使用。目前我们不保证有任何非破坏性更改。我们打算修复问题,改进它,并创建一个更有帮助的通用示例。

测试

克隆项目并导航到项目目录。在命令行中运行

composer install --dev
./vendor/bin/phpunit

问题

查看当前 问题新建一个问题

贡献

贡献

许可证

此 Bundle 受 MIT 许可证的约束。在 Bundle 中查看完整许可证: MIT 许可证