sylius/admin-order-creation-plugin

Sylius 管理面板订单创建插件

安装次数: 497,692

依赖项: 4

建议者: 0

安全性: 0

星标: 56

关注者: 15

分支: 50

开放性问题: 35

类型:sylius-plugin


README

管理订单创建插件

此插件允许在管理面板中创建订单。

Screenshot showing the order creation page, Shipments&Payments section

商业价值

到目前为止,客户需要使用可用的产品变体以及支付和运输方式来下单。

下单的全过程并不明显。由于某些原因,当促销活动不再可用或运输方式不适用于特定地区时,客户可能会感到有些困惑。这时就需要管理订单创建插件。

简而言之,它允许管理员代表客户下单或重新下单。这有助于解决客户的基本问题,并使管理员拥有创建订单的基本工具。

管理订单创建插件的过程基于从 SyliusCoreBundle 中获取的标准订单模型。唯一不同的是订单创建的上下文和业务需求。目前,管理员负责提供订单创建的渠道、区域和货币。更重要的是,管理员可以为任何项目或整个订单添加折扣,这在技术上讲是一种新的 Sylius 调整类型。

通过管理面板创建订单后,新订单将与其他通过 Sylius 创建的订单一样列出。

安装

小心!

以下安装说明假定您正在使用 Symfony Flex。如果您不使用,请参阅旧版安装说明。然而,我们强烈建议您使用 Symfony Flex,它会更快! :)

  1. 使用 composer 需要插件

    composer require sylius/admin-order-creation-plugin

    请记住使用 composer config extra.symfony.allow-contrib true 允许社区食谱或在进行插件安装过程中

  2. 将插件中覆盖的 Sylius 模板复制到您的模板目录中(例如 templates/bundles/

    mkdir -p templates/bundles/SyliusAdminBundle/
    cp -R vendor/sylius/admin-order-creation-plugin/src/Resources/views/SyliusAdminBundle/* templates/bundles/SyliusAdminBundle/
  3. 覆盖存储库

    1. 创建存储库类
      mkdir src/Repository
      touch src/Repository/CustomerRepository.php
      touch src/Repository/ProductVariantRepository.php
    2. 将以下内容粘贴到 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;
      }
    3. 将以下内容粘贴到 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;
      }
    4. 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