如何覆盖FOS用户捆绑表单标签

时间:2012-11-20 12:35:09

标签: symfony symfony-forms fosuserbundle

我很难覆盖Symfony2使用的FOS用户包使用的标签。

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

我可以删除一个元素,然后再用适当的标签添加它,但这看起来像是一种矫枉过正。是否有任何好的方法可以覆盖表单元素或者只是翻译键?

2 个答案:

答案 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(),
        ...
    ];
...
}