Sylius:覆盖 BackendMenuBuilder

Sylius: Overwrite BackendMenuBuilder

我开始开发一个基于 Sylius 的项目,在安装过程之后我想自定义后端仪表板。当 Sylius 使用服务时,我发现 BackendMenuBuilder 是一个名为 "sylius.menu_builder.backend" 的服务。考虑到这一点并进行了一些谷歌搜索,我在 AppBundle/Resources/config 中编辑了我的 "services.yml"" 并放置了以下行:

services:
    sylius.menu_builder.backend:
         class: AppBundle\Menu\Backend\BackendMenu

我在 "AppBundle\Menu\Backend" 中创建了一个新的 class "BackendMenu" 来调用 "default" Sylius 服务。我在第一次尝试时遇到了一些错误,但在我可以通过这种方式覆盖默认服务之后。这是正确的方法吗?对于任何我不想使用默认版本的新服务,我应该在我的 "services.yml" 中插入这个新参数吗?我想知道这一点,因为我认为在 Sylius 平台上开发一个 medium/big 项目,也许这可能是一个方便的问题。

而不是覆盖整个服务定义您可以只提供自己的 class 参数。示例:

parameters:
    sylius.menu_builder.backend.class: AppBundle\Menu\Backend\BackendMenu

那么您不需要重新声明所有参数(如果有的话)。

其他方法 ComplierPass - http://symfony.com/doc/current/bundles/override.html#services-configuration