Symfony 2:覆盖symfony组件

时间:2016-01-04 09:02:35

标签: php symfony

我正在搜索如何覆盖symfony的组件。在我的特定情况下,我想覆盖Translation组件的MessageCatalogue类,以便在没有找到翻译时发送事件。 这甚至可能吗?

1 个答案:

答案 0 :(得分:2)

是的,确实如此。这是how to override any part of a bundle的详细指南。第一个例子显示了你要找的东西。

// src/Acme/DemoBundle/DependencyInjection/Compiler/OverrideServiceCompilerPass.php
namespace Acme\DemoBundle\DependencyInjection\Compiler;

use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
use Symfony\Component\DependencyInjection\ContainerBuilder;

class OverrideServiceCompilerPass implements CompilerPassInterface
{
    public function process(ContainerBuilder $container)
    {
        $definition = $container->getDefinition('original-service-id');
        $definition->setClass('Acme\DemoBundle\YourService');
    }
}

然而,xabbuh对您的问题的评论似乎是一个更容易的解决方案。