brille24/customer-options

该包已被废弃且不再维护。作者建议使用brille24/sylius-customer-options-plugin包代替。

为Sylius添加产品定制功能

安装: 12

依赖者: 0

建议者: 0

安全性: 0

星标: 47

关注者: 9

分支: 34

开放性问题: 13

类型:sylius-plugin


README

客户选项

使用此插件,客户可以像这样添加产品附加信息:价格导入表单 价格导入表单

安装

  • 运行 composer require brille24/sylius-customer-options-plugin

  • 在您的 config/bundles.php 中注册插件

return [
    //...
    Brille24\SyliusCustomerOptionsPlugin\Brille24SyliusCustomerOptionsPlugin::class => ['all' => true],
];
  • config.yml 添加到您的本地 config/packages/_sylius.yaml
imports:
    ...
    - { resource: "@Brille24SyliusCustomerOptionsPlugin/Resources/config/app/config.yml" }
  • routing.yml 添加到您的本地 config/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: {}
  • 从插件目录复制模板覆盖
From: [shop_dir]/vendor/brille24/sylius-customer-options-plugin/test/Application/templates
To: [shop_dir]/templates

为了使用客户选项,您需要覆盖产品和订单项。

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();
    }
    // ...
}
  • 如果您还需要默认数据,则需要从包目录复制brille24_sylius_customer_options_plugin_fixtures.yaml文件,并运行
bin/console sylius:fixtures:load
  • 最后,生成迁移,更新数据库并更新翻译
bin/console doctrine:migrations:diff
bin/console doctrine:migrations:migrate
bin/console translation:update

注意事项

  • 将文件保存为客户定义的值,因为这些值当前以字符串形式存储在数据库中

开发

在开发过程中,建议使用git钩子,只需将docs/pre-commit复制到.git/hooks/pre-commit并使其可执行。然后您将在提交前检查您的代码风格。

使用

有关如何使用插件的文档可以在这里找到:这里