此定义已添加到Symfony https://github.com/symfony/symfony/blob/2.8/src/Symfony/Bundle/FrameworkBundle/Resources/config/translation.xml#L156
的v2.7中这是因为TranslationsCacheWarmer添加在2.7:https://github.com/symfony/FrameworkBundle/commit/4d4a85bed21604132db86d24d0af101518a18d50
中不幸的是,这破坏了我的一些代码,这在我尝试清除Symfony缓存时很明显。我使用PHP来处理翻译,这些文件中有一些自定义代码(即依赖于相对路径的DirectoryIterator ......),现在正在破坏。
我的计划是为此提出一个正确的解决方法。但是,作为短期修复 - 是否可以删除该定义,我在此消息的第一行引用?我的理解是,当我运行php app/console cache:clear --env=prod
我知道我可能只是从translation.xml中删除该块 - 但是,它嵌入在vendor/
目录的深处,这显然不是我的git存储库的一部分。理想情况下,我希望能够通过仅编辑自己的代码来解决这个问题,以便更改将流向其他人。我希望也许有一些方法可以覆盖它,可能是通过编译器传递或其他东西?
有人有任何建议吗?
答案 0 :(得分:8)
要取消注册其他捆绑包注册的服务,您可以使用compiler pass。
它看起来像:
<?php
namespace Acme\Bundle\AppBundle\DependencyInjection\Compiler;
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
use Symfony\Component\DependencyInjection\ContainerBuilder;
class UnregisterThirdPartyServicesPass implements CompilerPassInterface
{
public function process(ContainerBuilder $container)
{
$container->removeDefinition('translation.warmer');
}
}