【问题标题】:How to overwrite FOS user bundle form labels如何覆盖 FOS 用户捆绑表单标签
【发布时间】:2012-11-08 12:39:46
【问题描述】:

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

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

我可以删除一个元素,然后用适当的标签再次添加它,但这似乎有点过头了。有没有什么好的方法可以覆盖表单元素上的选项,或者只是翻译键?

【问题讨论】:

    标签: symfony symfony-forms fosuserbundle


    【解决方案1】:

    如前所述,您可以将翻译文件放入:
    app/Resources/translations

    但是,如果您在父包 (src/MyAppBundle/Resources/translations) 或任何其他包中覆盖它,请确保在您的内核中被覆盖的包之后加载您的包

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

    【讨论】:

      【解决方案2】:

      您不需要覆盖表单类。

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

      【讨论】:

      • 实际上我必须将它复制到 app/Resources/FOSUserBundle/translation 而不是我的捆绑目录才能使其工作,
      • 请注意,您必须在框架的 config.yml 中启用翻译才能使其正常工作,即:framework: translate: { fallback: "%locale" }
      • 请注意,如果您更改了缓存,则需要清除缓存(php app/console cache:clear)以重新加载翻译。
      • 我使用的是 SF2.8,放置文件的正确路径是 app/Resources/translations/FOSUserBundle.xx.yml
      • @MarioJohnathan 谢谢!有效!
      猜你喜欢
      • 2012-08-08
      • 1970-01-01
      • 2013-04-08
      • 2018-04-03
      • 1970-01-01
      • 2014-01-06
      • 1970-01-01
      • 1970-01-01
      • 2019-01-31
      相关资源
      最近更新 更多