【发布时间】:2019-10-06 10:57:30
【问题描述】:
在基于 Sylius 的 Symfony-4-Application 中,有一个服务装饰器位于其Core 深处:
<service id="sylius.order_item_quantity_modifier.limiting" class="Sylius\Component\Core\Cart\Modifier\LimitingOrderItemQuantityModifier" decorates="sylius.order_item_quantity_modifier" decoration-priority="256">
<argument type="service" id="sylius.order_item_quantity_modifier.limiting.inner" />
<argument>9999</argument>
</service>
但是,我想将这个装饰器替换为我在其服务定义中的don't want this limitation that is hard coded。
我该如何替换它?
我试图围绕这个服务装饰器定义一个服务装饰器,但由于某些原因它不适用:
app.core.cart.modifier:
class: AppBundle\Component\Core\Cart\Modifier\MyLimitingOrderItemQuantityModifier
decorates: sylius.order_item_quantity_modifier.limiting
decoration_priority: 1000
arguments:
我还尝试用我自己的类替换它的 service-id,但也没有用:
sylius.order_item_quantity_modifier.limiting:
class: AppBundle\Component\Core\Cart\Modifier\MyLimitingOrderItemQuantityModifier
decorates: sylius.order_item_quantity_modifier.limiting
decoration_priority: 100
arguments:
- "@app.core.cart.modifier.inner"
非常感谢任何帮助!
【问题讨论】:
-
你可能想要装饰
sylius.order_item_quantity_modifier,因为sylius.order_item_quantity_modifier.limiting是已经装饰的服务,你再次装饰...。 -
thx @jak 但是原来的装饰器仍然被启用并修改了值
-
你的服务的“名称”必须是
sylius.order_item_quantity_modifier.limiting...理论上。希望有效。