fmdd / admin-order-creation-plugin
后台订单创建插件
Requires
- php: ^8.0
- friendsofsymfony/jsrouting-bundle: ^2.2
- sylius/sylius: ^1.10
Requires (Dev)
- behat/behat: ^3.6
- behat/mink-selenium2-driver: ^1.4
- 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.3
- 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
- friendsofsymfony/oauth-server-bundle: ^1.6 || >2.0.0-alpha.0 ^2.0@dev
- phpspec/phpspec: ^7.0
- phpstan/phpstan: 0.12.84
- phpstan/phpstan-webmozart-assert: 0.12.12
- phpunit/phpunit: ^9.5
- polishsymfonycommunity/symfony-mocker-container: ^1.0
- se/selenium-server-standalone: ^2.52
- sylius-labs/coding-standard: ^3.0
- symfony/debug-bundle: ^4.4 || ^5.4
- symfony/dotenv: ^4.4 || ^5.4
- symfony/web-profiler-bundle: ^4.4 || ^5.4
- symfony/web-server-bundle: ^4.4 || ^5.4
- symfony/webpack-encore-bundle: ^1.12
Conflicts
- doctrine/dbal: ^3.0
This package is auto-updated.
Last update: 2024-09-18 18:42:36 UTC
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
- 将插件资产添加到您的项目中
-
导入webpack配置
-
导入插件的
webpack.config.js
文件// webpack.config.js const [ adminOrderCreationAdmin ] = require('./vendor/sylius/admin-order-creation-plugin/webpack.config.js') ... module.exports = [..., adminOrderCreationAdmin];
-
在
./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'
-
在
./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'
-
-
添加到现有配置
-
向您的
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')
-
运行
yarn encore dev
或yarn encore production
-
-
在您的entry.js文件中导入条目
- 只需将这些导入添加到您的entry.js文件中
// ./assets/admin/entry.js import '../../vendor/sylius/admin-order-creation-plugin/src/Resources/assets/admin/entry.js';
- 只需将这些导入添加到您的entry.js文件中
-
- 创建存储库类
扩展点
后台订单创建插件允许在订单创建过程中添加自定义折扣,因此需要用放在Resources/views
包中的模板替换一些订单显示模板。
支付链接生成和发送过程基于放置在PaymentLinkCreationListener类中的逻辑。因此,它可以很容易地用合适的实现替换。
调整集不是封闭和严格定义的 - 添加自定义调整意味着在AdjustmentType类中定义一个新的常量。
重新订单处理的重要部分受到官方SyliusCustomer Reorder Plugin的启发。如果需要更多处理器,只需添加一个新的实现ReorderProcessor接口的类,在reorder_processing.xml
文件中声明它,并将其与适当的标记匹配即可。
管理员订单创建流程基于Symfony表单。要了解更多关于Symfony表单扩展的可能性,请查看Symfony文档。
安全问题
如果您认为您发现了一个安全问题,请不要使用问题跟踪器并在公共论坛上发布。相反,所有安全问题都必须发送到security@sylius.com
。