我们已经通过composer从Shopware 6商店安装了一个插件。对于我们自己的功能,我们希望使用插件中的服务。
由于商店插件6中的插件可以被禁用和/或停用,我们无法在我们自己的插件/捆绑包中从services.xml中的插件可靠地使用服务。如果商店插件仍然被禁用/未激活,我们会得到错误“服务“...”依赖于不存在的服务“。
这个例子说明了这种情况:
<services>
<service id="MyPlugin..." public="true">
<!-- Service might be uninstalled/inactive. Conditional?-->
<argument type="service" id="ThirdPartyPlugin"/>
</service>
</services>
字符串
有没有什么最佳的做法,在Shopware中处理这种情况?我们可以实现一个条件,我们的服务将被定义只有当第三方插件是活动的?
1条答案
按热度按时间oug3syen1#
你可以在连接依赖时使用
on-invalid="null"
,这样null
会被注入,而不是真实的服务,如果它不存在,你的服务仍然需要处理这种情况下应该发生的事情(例如,提前返回,错误消息等),但至少symfony容器应该再次 Boot 。有关详细信息,请参阅
https://symfony.com/doc/current/service_container/optional_dependencies.html#setting-missing-dependencies-to-null
。所以对于你的例子,它应该看起来像:
字符串