在基于Symfony-4-Application Sylius的中,有一个服务装饰器放置在其核心中。
<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>但是,我想在其服务定义中替换这个装饰器作为不想要硬编码的限制。
我怎样才能换掉这个?
我试图围绕此服务装饰器定义服务装饰器,但由于某些原因它不适用:
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"任何帮助都非常感谢!
发布于 2019-10-07 08:14:13
您可以有2或3个选项:
- if you use the _XXXXXXX.inner_ injected service, instead of being the base service it will be the lower priority decorator : the **sylius decorator** in your case
- you could just decide to **not** use the _XXXXXXX.inner_ injected service and completely rewrite the function which is using the hard-coded value. It's not good for maintainability, but the way it's already done isn't either...
我刚刚在sylius/sylius存储库上看到了您的问题,第二个解决方案可能是最好的(在内核更改时很容易删除)!
https://stackoverflow.com/questions/58256572
复制相似问题