【问题标题】:Error pages Symfony2 with locale带有语言环境的错误页面 Symfony2
【发布时间】:2013-08-11 13:35:09
【问题描述】:

我正在尝试在 Symfony2 上翻译 404 页面,但它不起作用。有 500 个错误页面,效果很好。

例如,当我尝试访问页面时:/es/not-found 它显示 404 页面,但是当我访问 /en/not-found 时,它给了我相同的页面,虽然我已经翻译了错误我的messages-en.yml上的消息。

它似乎总是在访问 messages-es.yml 文件,因为我已经用这个默认的语言环境(es)配置了 Symfony。

如果我在我的 Twig 模板上打印 {{ app.request.locale }},它不会给我任何东西。

我清除了几次缓存,是的:)。

提前致谢!

【问题讨论】:

    标签: php symfony locale symfony-2.3


    【解决方案1】:

    如果本地化配置正常工作,您应该能够在 Twig 上打印语言环境。像这样:

    {% if app.request.locale == 'en' %}
        English 404 message
    {% else %}
        Other 404 message
    {% endif %}
    

    如果你的 Symfony 版本低于 2.1,你必须使用 app.session.locale 而不是 app.request.locale

    尽管如此,始终创建自定义 404 和您需要的任何其他错误页面是一种良好做法

    http://symfony.com/doc/current/cookbook/controller/error_pages.html

    最强大的方法是使用这种方法:

    用您自己的控制器替换默认的异常控制器 twig.controller.exception:showAction 并根据需要进行处理(请参阅 Twig 参考中的 exception_controller)。默认的异常控制器注册为服务——实际的类是 Symfony\Bundle\TwigBundle\Controller\ExceptionController。

    这样您甚至可以为每个国家/地区使用不同的模板。

    亲切的问候。

    【讨论】:

    • 感谢您的回答!我会尝试创建自己的控制器!
    • 是的!现在它可以工作了(自定义处理异常的控制器)。然而,奇怪的是 TwigBundle 中的控制器没有正确处理语言环境。我去看看,可能是我的错。
    • 你有自己的控制器的例子吗?
    猜你喜欢
    • 2011-12-01
    • 1970-01-01
    • 2016-08-20
    • 2012-03-02
    • 1970-01-01
    • 2016-01-07
    • 2013-01-31
    • 1970-01-01
    • 2011-08-13
    相关资源
    最近更新 更多