gewebe / sylius-product-deposit-plugin
一个Sylius插件,允许产品具有押金价格
v1.2.2
2022-02-15 22:20 UTC
Requires
- php: ^8.0
- sylius/sylius: ^1.11
Requires (Dev)
- behat/behat: ^3.6.1
- 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.4
- friends-of-behat/mink-debug-extension: ^2.0.0
- friends-of-behat/mink-extension: ^2.4
- 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/extension-installer: ^1.0
- phpstan/phpstan: 0.12.99
- phpstan/phpstan-doctrine: 0.12.33
- phpstan/phpstan-strict-rules: ^0.12.0
- phpstan/phpstan-webmozart-assert: 0.12.12
- phpunit/phpunit: ^9.5
- polishsymfonycommunity/symfony-mocker-container: ^1.0
- sensiolabs/security-checker: ^6.0
- sylius-labs/coding-standard: ^4.0
- symfony/browser-kit: ^5.4
- symfony/debug-bundle: ^5.4
- symfony/dotenv: ^5.4
- symfony/intl: ^5.4
- symfony/web-profiler-bundle: ^5.4
- vimeo/psalm: 4.7.1
This package is auto-updated.
Last update: 2024-09-16 04:04:10 UTC
README
在Sylius中,产品押金插件允许您为任何产品设置可退还的押金价格。例如:瓶子的押金、罐子的押金、托盘的押金、电池或汽车替换零件的押金。
功能
- 为每个产品变体和渠道存储单独的押金价格
- 押金价格在产品详情页上显示
- 在购物车/结账/订单时,显示包括押金在内的总单位价格。
安装
通过composer下载插件
composer require gewebe/sylius-product-deposit-plugin
启用插件
通过将其添加到您的 config/bundles.php
文件来注册插件
<?php return [ // ... Gewebe\SyliusProductDepositPlugin\GewebeSyliusProductDepositPlugin::class => ['all' => true], ];
配置插件
# config/packages/gewebe_sylius_product_deposit.yaml imports: - { resource: '@GewebeSyliusProductDepositPlugin/Resources/config/app/config.yml'}
从插件目录复制模板覆盖
From: [shop_dir]/vendor/gewebe/sylius-product-deposit-plugin/test/Application/templates
To: [shop_dir]/templates
扩展 ProductVariant
实体
- 如果您使用
annotations
映射
# src/Entity/Product/ProductVariant.php namespace App\Entity\Product; use Doctrine\ORM\Mapping as ORM; use Gewebe\SyliusProductDepositPlugin\Entity\ProductVariantInterface as ProductVariantDepositInterface; use Gewebe\SyliusProductDepositPlugin\Entity\ProductVariantDepositTrait; use Sylius\Component\Core\Model\ProductVariant as BaseProductVariant; /** * @ORM\Entity * @ORM\Table(name="sylius_product_variant") */ class ProductVariant extends BaseProductVariant implements ProductVariantDepositInterface { use ProductVariantDepositTrait; public function __construct() { parent::__construct(); $this->initProductVariantDepositTrait(); } // ... }
- 如果您使用
yaml
映射,也要添加
App\Entity\Product\ProductVariant: type: entity table: sylius_product_variant manyToOne: depositTaxCategory: targetEntity: Sylius\Component\Taxation\Model\TaxCategoryInterface joinColumn: name: deposit_tax_category_id referencedColumnName: id onDelete: SET NULL oneToMany: channelDeposits: targetEntity: Gewebe\SyliusProductDepositPlugin\Entity\ChannelDepositInterface mappedBy: productVariant orphanRemoval: true indexBy: channelCode cascade: - all
更新您的数据库模式
bin/console doctrine:migrations:diff bin/console doctrine:migrations:migrate
用法
1. 为产品变体添加押金价格
2. 浏览带有押金价格的产品变体
3. 购买包含在最终产品价格中的押金价格的产品
测试
设置
$ composer install $ cd tests/Application $ yarn install $ yarn run gulp $ bin/console assets:install public -e test $ bin/console doctrine:schema:create -e test $ export APP_ENV=test $ symfony server:start --port=8080 --dir=public
运行测试
$ vendor/bin/behat $ vendor/bin/phpspec run $ vendor/bin/phpstan analyse -c phpstan.neon -l max src/ $ vendor/bin/psalm