asdoria/sylius-quote-request-plugin

在 sylius 中生成报价请求。

安装: 419

依赖: 0

建议者: 0

安全: 0

星星: 3

观察者: 0

分支: 2

开放问题: 3

类型:sylius-plugin


README

Logo Asdoria

Asdoria QuoteRequest 插件

将报价请求管理简单地集成到 Sylius 商店

功能

  • 管理您店铺的报价请求

Add to Cart

安装

  1. 运行 composer require asdoria/sylius-quote-request-plugin

  2. config/bundles.php 中添加捆绑

Asdoria\SyliusQuoteRequestPlugin\AsdoriaSyliusQuoteRequestPlugin::class => ['all' => true],
  1. config/routes.yaml 中导入路由
asdoria_quick_shopping:
    resource: "@AsdoriaSyliusQuickShoppingPlugin/Resources/config/routing.yaml"
asdoria_quote_request:
    resource: "@AsdoriaSyliusQuoteRequestPlugin/config/routing.yaml"

#if you don't want to use the quick sopping page added this route
asdoria_shop_quick_shopping_index:
    path: /{_locale}/quick-shopping
    controller: Symfony\Bundle\FrameworkBundle\Controller\RedirectController::redirectAction
    defaults:
        route: asdoria_shop_quote_request_index
        # make a permanent redirection...
        permanent: true
        # ...and keep the original query string parameters
        keepQueryParams: true
  1. config/packages/_sylius.yaml 中导入配置
imports:
    - { resource: "@AsdoriaSyliusQuickShoppingPlugin/Resources/config/config.yaml"}
    - { resource: "@AsdoriaSyliusQuoteRequestPlugin/config/config.yaml"}
  1. 将以下内容粘贴到 src/Repository/ProductVariantRepository.php
  <?php

  declare(strict_types=1);

  namespace App\Repository;

  use Asdoria\SyliusQuickShoppingPlugin\Repository\Model\ProductVariantRepositoryAwareInterface;
  use Asdoria\SyliusQuickShoppingPlugin\Repository\ProductVariantRepositoryTrait;
  use Sylius\Bundle\CoreBundle\Doctrine\ORM\ProductVariantRepository as BaseProductVariantRepository;
  
  final class ProductVariantRepository extends BaseProductVariantRepository implements ProductVariantRepositoryAwareInterface
  {
      use ProductVariantRepositoryTrait;
  }
  1. config/packages/_sylius.yaml 中配置仓库
 sylius_product:
     resources:
         product_variant:
             classes:
                 model: App\Entity\Product\ProductVariant
+                repository: App\Repository\ProductVariantRepository
  1. 覆盖 templates/bundles/SyliusShopBundle/Product/Show/_addToCart.html.twig 中的 _addToCart.html.twig
{% set product = order_item.variant.product %}

{% form_theme form '@SyliusShop/Form/theme.html.twig' %}

<div class="ui segment" id="sylius-product-selecting-variant" {{ sylius_test_html_attribute('product-selecting-variant') }}>
    {{ sylius_template_event('sylius.shop.product.show.before_add_to_cart', {'product': product, 'order_item': order_item}) }}

    {{ form_start(form, {'action': path('sylius_shop_ajax_cart_add_item', {'productId': product.id}), 'attr': {'id': 'sylius-product-adding-to-cart', 'class': 'ui loadable form', 'novalidate': 'novalidate', 'autocomplete': 'off', 'data-redirect': path(configuration.getRedirectRoute('summary'))}}) }}
    {{ form_errors(form) }}
    <div class="ui red label bottom pointing hidden sylius-validation-error" id="sylius-cart-validation-error" {{ sylius_test_html_attribute('cart-validation-error') }}></div>
    {% if not product.simple %}
        {% if product.variantSelectionMethodChoice %}
            {% include '@SyliusShop/Product/Show/_variants.html.twig' %}
        {% else %}
            {% include '@SyliusShop/Product/Show/_options.html.twig' %}
        {% endif %}
    {% endif %}
    {{ form_row(form.cartItem.quantity, sylius_test_form_attribute('quantity')) }}

    {{ sylius_template_event('sylius.shop.product.show.add_to_cart_form', {'product': product, 'order_item': order_item, 'form': form}) }}

-   <button type="submit" class="ui huge primary icon labeled button" {{ sylius_test_html_attribute('add-to-cart-button') }}><i class="cart icon"></i> {{ 'sylius.ui.add_to_cart'|trans }}</button>
+   <div class="ui buttons">
+       <button type="submit" class="ui huge primary icon labeled button" {{ sylius_test_html_attribute('add-to-cart-button') }}><i class="cart icon"></i> {{ 'sylius.ui.add_to_cart'|trans }}</button>
+       <div class="or" data-text="{{ 'asdoria_quote_request.ui.shop.or'|trans }}"></div>
+       <button type="submit"
+               id="asdoria-shop-quote-request-add-to-quote"
+               data-action="{{ path('sylius_shop_ajax_quote_add_item', {'productId': product.id}) }}"
+               class="ui huge primary icon labeled button" {{ sylius_test_html_attribute('add-to-quote-button') }}
+               data-redirect="{{ path('asdoria_shop_quote_request_index') }}"
+               data-csrf-token="{{ csrf_token('asdoria-shop-quote-request-add-to-quote') }}"
+       >
+           <i class="box icon"></i>
+           {{ 'asdoria_quote_request.ui.shop.add_to_quote'|trans }}
+       </button>
+    </div>
    {{ form_row(form._token) }}
    {{ form_end(form, {'render_rest': false}) }}
</div>  

演示

您可以通过以下链接在线尝试 QuoteRequest 插件: 这里!.

请注意,我们为 Sylius 开发了几个其他开源插件,其演示和文档列在 以下页面 上。

用法

  1. 在商店办公室,前往 /en_US/quote-request 路由。