错误页面Symfony2与语言环境

时间:2013-08-11 13:35:10

标签: php symfony locale symfony-2.3

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

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

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

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

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

提前致谢!

1 个答案:

答案 0 :(得分:2)

如果本地化配置正常工作,您应该能够在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。

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

亲切的问候。