2012-11-20 25 views
11

我很难覆盖FOS用户包为Symfony2使用的标签。如何覆盖FOS用户包表单标签

我已经覆盖Form类,但没有像“setOption”这样的元素的选项,只有getters。

我可以删除一个元素,然后再添加一个合适的标签,但这看起来像是一种矫枉过正。有没有什么好的方式来覆盖表单元素的选项,或者只是翻译键,也许呢?

回答

30

您不需要覆盖表单类。

复制/粘贴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

真棒,谢谢老兄! –

+5

其实我不得不将它复制到应用程序/ Resources/FOSUserBundle/translation,而不是我的捆绑软件目录中,以使其工作, –

+0

是的你是对的! – AlterPHP

0

前面已经说了,你可以把你的翻译文件:
app/Resources/translations

但是,如果你在你的父包(src/MyAppBundle/Resources/translations)覆盖它或以任何其它捆绑,确保负载重写的包在你的内核后,你的包:

public function registerBundles() 
{ 
    $bundles = [ 
     ... 
     new FOS\UserBundle\FOSUserBundle(), 
     new MyAppBundle\MyAppBundle(), 
     ... 
    ]; 
... 
}