我很难覆盖Symfony2使用的FOS用户包使用的标签。
我已经覆盖了Form类,但是没有像“setOption”这样的元素的选项,只有getter。
我可以删除一个元素,然后再用适当的标签添加它,但这看起来像是一种矫枉过正。是否有任何好的方法可以覆盖表单元素或者只是翻译键?
答案 0 :(得分:32)
您不需要覆盖表单类。
将vendor/friendsofsymfony/user-bundle/FOS/UserBundle/Resources/translations/FOSUserBundle.xx.yml
目录中的app/Resources/translations
文件复制/粘贴(具有相同的目录结构和相同的文件名),并重新定义翻译以方便您使用。
编辑:正如@ mario-johnathan所说,覆盖翻译不是捆绑继承的一部分。有关官方文档,请参阅http://symfony.com/doc/current/cookbook/bundles/override.html#translations
答案 1 :(得分:1)
如前所述,您可以将翻译文件放入:
app/Resources/translations
但是如果你在父包(src/MyAppBundle/Resources/translations
)或任何其他包中覆盖它,请确保在内核中包含被覆盖的包后加载你的包:
public function registerBundles()
{
$bundles = [
...
new FOS\UserBundle\FOSUserBundle(),
new MyAppBundle\MyAppBundle(),
...
];
...
}