sylius / admin-order-creation-plugin
Sylius 管理面板订单创建插件
Requires
- php: ^8.1
- friendsofsymfony/jsrouting-bundle: ^3.2
- sylius/sylius: ~1.12.0 || ~1.13.0
Requires (Dev)
- behat/behat: ^3.6
- behat/mink-selenium2-driver: ^1.4
- dbrekelmans/bdi: ^1.1
- dmore/behat-chrome-extension: ^1.3
- dmore/chrome-mink-driver: ^2.7
- friends-of-behat/mink: ^1.8
- friends-of-behat/mink-browserkit-driver: ^1.4
- friends-of-behat/mink-debug-extension: ^2.0
- friends-of-behat/mink-extension: ^2.5
- friends-of-behat/page-object-extension: ^0.3
- friends-of-behat/suite-settings-extension: ^1.0
- friends-of-behat/symfony-extension: ^2.1
- friends-of-behat/variadic-extension: ^1.3
- phpspec/phpspec: ^7.2
- phpstan/phpstan: ^1.8
- phpstan/phpstan-webmozart-assert: ^1.2
- phpunit/phpunit: ^10.5
- polishsymfonycommunity/symfony-mocker-container: ^1.0
- robertfausk/behat-panther-extension: ^1.1
- sylius-labs/coding-standard: ^4.2
- sylius-labs/suite-tags-extension: ^0.2
- symfony/debug-bundle: ^5.4 || ^6.4
- symfony/dotenv: ^5.4 || ^6.4
- symfony/runtime: ^5.4 || ^6.4
- symfony/web-profiler-bundle: ^5.4 || ^6.4
README
管理订单创建插件
此插件允许在管理面板中创建订单。
商业价值
到目前为止,客户需要使用可用的产品变体以及支付和运输方式来下单。
下单的全过程并不明显。由于某些原因,当促销活动不再可用或运输方式不适用于特定地区时,客户可能会感到有些困惑。这时就需要管理订单创建插件。
简而言之,它允许管理员代表客户下单或重新下单。这有助于解决客户的基本问题,并使管理员拥有创建订单的基本工具。
管理订单创建插件的过程基于从 SyliusCoreBundle 中获取的标准订单模型。唯一不同的是订单创建的上下文和业务需求。目前,管理员负责提供订单创建的渠道、区域和货币。更重要的是,管理员可以为任何项目或整个订单添加折扣,这在技术上讲是一种新的 Sylius 调整类型。
通过管理面板创建订单后,新订单将与其他通过 Sylius 创建的订单一样列出。
安装
小心!
以下安装说明假定您正在使用 Symfony Flex。如果您不使用,请参阅旧版安装说明。然而,我们强烈建议您使用 Symfony Flex,它会更快! :)
-
使用 composer 需要插件
composer require sylius/admin-order-creation-plugin
请记住使用
composer config extra.symfony.allow-contrib true
允许社区食谱或在进行插件安装过程中 -
将插件中覆盖的 Sylius 模板复制到您的模板目录中(例如
templates/bundles/
)mkdir -p templates/bundles/SyliusAdminBundle/ cp -R vendor/sylius/admin-order-creation-plugin/src/Resources/views/SyliusAdminBundle/* templates/bundles/SyliusAdminBundle/
-
覆盖存储库
- 创建存储库类
mkdir src/Repository touch src/Repository/CustomerRepository.php touch src/Repository/ProductVariantRepository.php
- 将以下内容粘贴到
src/Repository/CustomerRepository.php
<?php declare(strict_types=1); namespace App\Repository; use Sylius\AdminOrderCreationPlugin\Doctrine\ORM\CustomerRepositoryInterface; use Sylius\AdminOrderCreationPlugin\Doctrine\ORM\CustomerRepositoryTrait; use Sylius\Bundle\CoreBundle\Doctrine\ORM\CustomerRepository as BaseCustomerRepository; final class CustomerRepository extends BaseCustomerRepository implements CustomerRepositoryInterface { use CustomerRepositoryTrait; }
- 将以下内容粘贴到
src/Repository/ProductVariantRepository.php
<?php declare(strict_types=1); namespace App\Repository; use Sylius\AdminOrderCreationPlugin\Doctrine\ORM\ProductVariantRepositoryInterface; use Sylius\AdminOrderCreationPlugin\Doctrine\ORM\ProductVariantRepositoryTrait; use Sylius\Bundle\CoreBundle\Doctrine\ORM\ProductVariantRepository as BaseProductVariantRepository; final class ProductVariantRepository extends BaseProductVariantRepository implements ProductVariantRepositoryInterface { use ProductVariantRepositoryTrait; }
- 在
config/packages/_sylius.yaml
中配置存储库
sylius_customer: resources: customer: classes: model: App\Entity\Customer\Customer + repository: App\Repository\CustomerRepository sylius_product: resources: product_variant: classes: model: App\Entity\Product\ProductVariant + repository: App\Repository\ProductVariantRepository
- 创建存储库类
扩展点
管理订单创建插件允许在订单创建过程中添加自定义折扣,因此需要将一些订单显示模板替换为位于 Resources/views
包中的模板。
支付链接生成和发送过程基于放置在 PaymentLinkCreationListener 类中的逻辑。因此,它可以很容易地替换为适当的实现。
调整集不是封闭的,也不是严格定义的 - 添加自定义调整意味着在 AdjustmentType 类中定义一个新的常量。
重新订购处理的重要部分受到官方 Sylius Customer Reorder Plugin 的启发。如果需要更多的处理器,只需添加一个实现 ReorderProcessor
接口的新类,在 reorder_processing.xml
文件中声明它,并匹配适当的标签即可。
管理员订单创建流程基于Symfony表单。要了解更多关于Symfony表单扩展的可能性,请查看Symfony文档。
安全问题
如果您认为您发现了一个安全问题,请不要使用问题跟踪器并不要公开发布。相反,所有安全问题都必须发送到security@sylius.com
。