fmdd/admin-order-creation-plugin

后台订单创建插件

安装: 209

依赖: 0

建议者: 0

安全性: 0

星标: 0

关注者: 0

分支: 50

类型: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
    1. 将插件资产添加到您的项目中
      1. 导入webpack配置

        1. 导入插件的webpack.config.js文件

          // webpack.config.js
          const [ adminOrderCreationAdmin ] = require('./vendor/sylius/admin-order-creation-plugin/webpack.config.js')
          ...
          
          module.exports = [..., adminOrderCreationAdmin];
        2. ./config/packages/assets.yaml中添加新包

          # config/packages/assets.yaml
          
          framework:
              assets:
                  packages:
                      # ...
                      admin_order_creation:
                          json_manifest_path: '%kernel.project_dir%/public/build/sylius/admin-order-creation/admin/manifest.json'
        3. ./config/packages/webpack_encore.yml中添加新构建路径

          # config/packages/webpack_encore.yml
          
          webpack_encore:
              builds:
                  # ...
                  admin_order_creation: '%kernel.project_dir%/public/build/sylius/admin-order-creation/admin'
      2. 添加到现有配置

        1. 向您的webpack.config.js添加新条目

          // ./webpack.config.js
          
          // Admin config
              .addEntry('sylius-order-creation-admin', 'vendor/sylius/admin-order-creation-plugin/src/Resources/assets/admin/entry.js')
        2. 运行yarn encore devyarn encore production

      3. 在您的entry.js文件中导入条目

        1. 只需将这些导入添加到您的entry.js文件中
          // ./assets/admin/entry.js
          import '../../vendor/sylius/admin-order-creation-plugin/src/Resources/assets/admin/entry.js';

扩展点

后台订单创建插件允许在订单创建过程中添加自定义折扣,因此需要用放在Resources/views包中的模板替换一些订单显示模板。

支付链接生成和发送过程基于放置在PaymentLinkCreationListener类中的逻辑。因此,它可以很容易地用合适的实现替换。

调整集不是封闭和严格定义的 - 添加自定义调整意味着在AdjustmentType类中定义一个新的常量。

重新订单处理的重要部分受到官方SyliusCustomer Reorder Plugin的启发。如果需要更多处理器,只需添加一个新的实现ReorderProcessor接口的类,在reorder_processing.xml文件中声明它,并将其与适当的标记匹配即可。

管理员订单创建流程基于Symfony表单。要了解更多关于Symfony表单扩展的可能性,请查看Symfony文档

安全问题

如果您认为您发现了一个安全问题,请不要使用问题跟踪器并在公共论坛上发布。相反,所有安全问题都必须发送到security@sylius.com