首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Sylius中重写PriceHelper

在Sylius中重写PriceHelper
EN

Stack Overflow用户
提问于 2018-08-20 05:23:11
回答 2查看 557关注 0票数 1

我试图通过添加PriceHelper函数来覆盖getOriginalPrice类,但是由于service.yml上的服务没有注册,所以我添加了以下内容:

代码语言:javascript
复制
services:
    AppBundle\Helper\PriceHelper\:
        class: AppBundle\Helper\PriceHelper
        arguments:
            - "@sylius.calculator.product_variant_price"
        tags:
            - { name: templating.helper, event: sylius.templating.helper.price, method: getOriginalPrice, alias: sylius_calculate_original_price }

在树枝上,我补充道:

代码语言:javascript
复制
{%- macro calculateOriginalPrice(variant) -%}
  {% from _self import convertAndFormat %}
  {{- convertAndFormat(variant|sylius_calculate_original_price({'channel': sylius.channel})) }}
{%- endmacro -%}

代之以:

代码语言:javascript
复制
{{ money.calculatePrice(product|sylius_resolve_variant) }}

代码语言:javascript
复制
{{ money.calculateOriginalPrice(product|sylius_resolve_variant) }}

错误:

代码语言:javascript
复制
Unknown "sylius_calculate_original_price" filter. Did you mean 
"sylius_calculate_price"?

有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-22 07:39:09

问题解决了。services.yml实际上很好。只需在config.yml中添加以下内容:

代码语言:javascript
复制
twig:
    globals:
        sylius_calculate_original_price: "@app.templating.helper.price"

在树枝上:

代码语言:javascript
复制
{{ sylius_calculate_original_price.getOriginalPrice(variant,{'channel': sylius.channel}) }}

services.yml可以缩短为:

代码语言:javascript
复制
app.templating.helper.price:
    decorates: sylius.templating.helper.price
    class: AppBundle\Helper\PriceHelper
    arguments:
        - "@sylius.calculator.product_variant_price"
票数 3
EN

Stack Overflow用户

发布于 2018-08-20 12:13:09

PriceHelper服务在以下文件中配置:https://github.com/Sylius/Sylius/blob/f7d42d2ce64288407372775e0ed421debcd50cd3/src/Sylius/Bundle/CoreBundle/Resources/config/services/templating.xml

但是,与其像你那样更换服务,不如把它装饰一下。使用新类扩展PriceHelper类,并添加所需的功能,然后添加新服务的配置,如下面的链接所述,以装饰PriceHelper服务:decoration.html

在您的具体情况下,您必须使用以下配置:

代码语言:javascript
复制
AppBundle\Helper\PriceHelper:
    decorates: '@sylius.templating.helper.price'
    arguments:
        $productVariantPriceCalculator: '@sylius.calculator.product_variant_price'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51924554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档