我很难覆盖 Symfony2 的 FOS 用户包使用的标签。
我已经覆盖了 Form 类,但是像“setOption”这样的元素没有选项,只有 getter。
我可以删除一个元素,然后用正确的标签再次添加它,但这似乎有点过头了。有没有什么好的方法可以覆盖表单元素上的选项,或者只是翻译键?
我很难覆盖 Symfony2 的 FOS 用户包使用的标签。
我已经覆盖了 Form 类,但是像“setOption”这样的元素没有选项,只有 getter。
我可以删除一个元素,然后用正确的标签再次添加它,但这似乎有点过头了。有没有什么好的方法可以覆盖表单元素上的选项,或者只是翻译键?
您不需要覆盖 Form 类。
在您的目录中复制/粘贴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
如前所述,您可以将翻译文件放入:
app/Resources/translations
但是,如果您在父包 ( src/MyAppBundle/Resources/translations
) 或任何其他包中覆盖它,请确保在内核中被覆盖 的包之后加载您的包:
public function registerBundles()
{
$bundles = [
...
new FOS\UserBundle\FOSUserBundle(),
new MyAppBundle\MyAppBundle(),
...
];
...
}