brille24/sylius-customer-options-plugin
最新稳定版本:v4.0.5
Composer 安装命令:
composer require brille24/sylius-customer-options-plugin
包简介
Adds product customizing to Sylius
README 文档
README
With this plugin the customer can add additional info to the product like so:

Installation
-
Run
composer require brille24/sylius-customer-options-plugin. -
Register the Plugin in your
config/bundles.php:
return [ //... Brille24\SyliusCustomerOptionsPlugin\Brille24SyliusCustomerOptionsPlugin::class => ['all' => true], ];
- Add the
config.ymlto your localconfig/packages/_sylius.yaml:
imports: ... - { resource: "@Brille24SyliusCustomerOptionsPlugin/Resources/config/app/config.yml" }
- Add the
routing.ymlto your localconfig/routes.yaml:
brille24_customer_options: resource: "@Brille24SyliusCustomerOptionsPlugin/Resources/config/app/routing.yml" sylius_shop_ajax_cart_add_item: path: ajax/cart/add methods: [POST] defaults: _controller: sylius.controller.order_item::addAction _format: json _sylius: factory: method: createForProductWithCustomerOption arguments: [expr:notFoundOnNull(service('sylius.repository.product').find($productId))] form: type: Sylius\Bundle\CoreBundle\Form\Type\Order\AddToCartType options: product: expr:notFoundOnNull(service('sylius.repository.product').find($productId)) redirect: route: sylius_shop_cart_summary parameters: {} flash: sylius.cart.add_item sylius_shop_partial_cart_add_item: path: cart/add-item methods: [GET] defaults: _controller: sylius.controller.order_item::addAction _sylius: template: $template factory: method: createForProductWithCustomerOption arguments: [expr:notFoundOnNull(service('sylius.repository.product').find($productId))] form: type: Sylius\Bundle\CoreBundle\Form\Type\Order\AddToCartType options: product: expr:notFoundOnNull(service('sylius.repository.product').find($productId)) redirect: route: sylius_shop_cart_summary parameters: {}
- Copy the template overrides from the plugin directory
From: [shop_dir]/vendor/brille24/sylius-customer-options-plugin/test/Application/templates
To: [shop_dir]/templates
In order to use the customer options, you need to override the product and order item.
use Brille24\SyliusCustomerOptionsPlugin\Entity\ProductInterface; use Brille24\SyliusCustomerOptionsPlugin\Traits\ProductCustomerOptionCapableTrait; use Sylius\Component\Core\Model\Product as BaseProduct; class Product extends BaseProduct implements ProductInterface { use ProductCustomerOptionCapableTrait { __construct as protected customerOptionCapableConstructor; } public function __construct() { parent::__construct(); $this->customerOptionCapableConstructor(); } // ... }
use Brille24\SyliusCustomerOptionsPlugin\Entity\OrderItemInterface; use Brille24\SyliusCustomerOptionsPlugin\Traits\OrderItemCustomerOptionCapableTrait; use Sylius\Component\Core\Model\OrderItem as BaseOrderItem; class OrderItem extends BaseOrderItem implements OrderItemInterface { use OrderItemCustomerOptionCapableTrait { __construct as protected customerOptionCapableConstructor; } public function __construct() { parent::__construct(); $this->customerOptionCapableConstructor(); } // ... }
- If you also want default data you need to copy over the
brille24_sylius_customer_options_plugin_fixtures.yamlfile from the package directory and run
bin/console sylius:fixtures:load
- Finally, generate migrations, update the database and update the translations:
bin/console doctrine:migrations:diff bin/console doctrine:migrations:migrate bin/console translation:update
Things to consider
- Saving files as customer defined values as the values are currently stored as a string in the database
Developing
When developing it is recommended to use git hooks for this just copy the docs/pre-commit to .git/hooks/pre-commit and make it executable. Then you will check your codestyle before committing.
Usage
Documentation on how to use the plugin can be found here.
统计信息
- 总下载量: 34.55k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 48
- 点击次数: 0
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2018-04-12