commercetools / symfony-bundle
Commercetools平台的Symfony扩展包
Requires
- php: >=7.0
- commercetools/php-sdk: ^2.6
- squizlabs/php_codesniffer: ^3.4
- symfony/cache: ^3.4 | ^4.0
- symfony/console: ^3.4 | ^4.0
- symfony/dotenv: ^3.4 | ^4.0
- symfony/form: ^3.4 | ^4.0
- symfony/framework-bundle: ^3.4 | ^4.0
- symfony/security-bundle: ^3.4 | ^4.0
- symfony/serializer: ^3.4 | ^4.0
- symfony/stopwatch: ^3.4 | ^4.0
- symfony/templating: ^3.4 | ^4.0
- symfony/twig-bundle: ^3.4 | ^4.0
- symfony/validator: ^3.4 | ^4.0
- symfony/var-dumper: ^3.4 | ^4.0
- symfony/workflow: ^3.4 | ^4.0
- twig/extensions: ^1.5
Requires (Dev)
- cache/filesystem-adapter: ^1.0
- commercetools/commercetools-api-reference: dev-master
- matthiasnoback/symfony-dependency-injection-test: ^3.0
- phpunit/phpunit: ^7.0 | ^6.0 | ^5.0
- symfony/phpunit-bridge: ^3.4 | ^4.0
- symfony/test-pack: ^1.0
This package is auto-updated.
Last update: 2024-08-29 01:36:15 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/console
、symfony/workflow
、twig/extensions
- 依赖项:
默认情况下,CtpBundle
和CustomerBundle
对所有环境都启用。SetupBundle
和StateBundle
仅对开发环境启用。要查看启用了哪些扩展包以及可选地启用或禁用它们,请编辑config/bundles.php
文件。
可用服务
主要思想是,在每一个Bundle中,都有一组可重用的服务,您可以直接将其注入到您的应用程序中。作为一个通用的模式,有几个*Manager
服务,它们提供相关的操作。例如,在CartManager
中,您将找到如getCart
、createCartForUser
和update
等助手。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
控制台命令
SetupBundle
和StateBundle
附带一些实用的控制台命令。这些命令在开发期间自动化任务,并允许在线项目和本地配置之间的双向同步。要使用控制台命令,请导航到您的项目目录并运行
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
处创建一个Symfonystate_machine
类型配置文件 -
bin/console commercetools:set-workflow-config
:从commercetools平台获取状态并在<PROJECT_DIR>/config/packages/<ENV>/workflow.yaml
处创建一个Symfonyworkflow
类型配置文件有关使用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 许可证