【发布时间】:2012-11-08 12:39:46
【问题描述】:
我很难覆盖 Symfony2 的 FOS 用户包使用的标签。
我已经覆盖了 Form 类,但是没有像“setOption”这样的元素的选项,只有 getters。
我可以删除一个元素,然后用适当的标签再次添加它,但这似乎有点过头了。有没有什么好的方法可以覆盖表单元素上的选项,或者只是翻译键?
【问题讨论】:
标签: symfony symfony-forms fosuserbundle
我很难覆盖 Symfony2 的 FOS 用户包使用的标签。
我已经覆盖了 Form 类,但是没有像“setOption”这样的元素的选项,只有 getters。
我可以删除一个元素,然后用适当的标签再次添加它,但这似乎有点过头了。有没有什么好的方法可以覆盖表单元素上的选项,或者只是翻译键?
【问题讨论】:
标签: symfony symfony-forms fosuserbundle
如前所述,您可以将翻译文件放入:app/Resources/translations
但是,如果您在父包 (src/MyAppBundle/Resources/translations) 或任何其他包中覆盖它,请确保在您的内核中被覆盖的包之后加载您的包:
public function registerBundles()
{
$bundles = [
...
new FOS\UserBundle\FOSUserBundle(),
new MyAppBundle\MyAppBundle(),
...
];
...
}
【讨论】:
您不需要覆盖表单类。
复制/粘贴vendor/friendsofsymfony/user-bundle/FOS/UserBundle/Resources/translations/FOSUserBundle.xx.yml 文件到您的app/Resources/translations 目录(具有相同的目录结构和相同的文件名)并重新定义翻译以方便您。
edit:正如@mario-johnathan 所说,覆盖翻译不是包继承的一部分。官方文档见http://symfony.com/doc/current/cookbook/bundles/override.html#translations
【讨论】:
config.yml 中启用翻译才能使其正常工作,即:framework: translate: { fallback: "%locale" }