如何自定义错误页
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 2.1,现已不再维护。
读本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。
如何自定义错误页
在Symfony2中抛出任何异常时,异常会在ob娱乐下载内核
类,并最终转发给一个特殊的控制器,TwigBundle:例外:显示
进行处理。这个控制器,位于核心内部TwigBundle
,确定要显示哪个错误模板以及应该为给定异常设置的状态代码。
错误页面可以用两种不同的方式定制,这取决于你需要多大的控制:
- 定制不同错误页面的错误模板(如下所述);
- 替换默认的异常控制器
TwigBundle:例外:显示
使用您自己的控制器,并以您想要的方式处理它(参见在Twig引用中的exception_controller);
提示
异常处理的自定义实际上比这里所写的要强大得多。内部事件,kernel.exception
,这允许完全控制异常处理。有关更多信息,请参见内部.
所有的错误模板都在里面TwigBundle
.要覆盖模板,只需依赖覆盖包内模板的标准方法。有关更多信息,请参见创建和使用模板.
例如,要覆盖显示给最终用户的默认错误模板,请创建位于应用程序/资源/ / error.html.twig TwigBundle /视图/异常
:
1 2 3 4 5 6 7 8 9 10 11
<!文档类型超文本标记语言><超文本标记语言><头><元http-equiv=“内容类型”内容=“text / html;charset = utf - 8”/><标题>发生错误:{{status_text}}标题>头><身体><h1>哦!发生错误h1><h2>服务器返回一个“{{status_code}}{{status_text}}".h2>身体>超文本标记语言>
谨慎
你不得使用is_granted
在错误页面(或错误页面使用的布局)中,因为路由器在防火墙之前运行。如果路由器抛出异常(例如,当路由不匹配时),则使用is_granted
将引发另一个异常。你可以使用is_granted
安全地说{% if app.user和is_granting('…')%}
.
提示
如果你不熟悉Twig,别担心。Twig是一个简单的,强大的和可选的模板引擎集成ob娱乐下载Symfony2
.有关Twig的更多信息,请参阅创建和使用模板.
除了标准的HTML错误页面外,Symfony还为许多最常见的响应格式提供了默认错误页面,包ob娱乐下载括JSON (error.json.twig
), XML (error.xml.twig
),甚至Javascript (error.js.twig
),再举几个例子。中创建一个具有相同名称的新文件即可覆盖这些模板app /资源/ TwigBundle /视图/例外
目录中。这是覆盖包中任何模板的标准方法。
自定义404页面和其他错误页面
还可以根据HTTP状态码定制特定的错误模板。例如,创建一个应用程序/资源/ / error404.html.twig TwigBundle /视图/异常
模板显示404(未找到页面)错误的特殊页面。
ob娱乐下载Symfony使用以下算法来确定使用哪个模板:
- 首先,它为给定的格式和状态代码寻找模板(例如
error404.json.twig
); - 如果它不存在,它就为给定的格式寻找模板(比如
error.json.twig
); - 如果它不存在,它将回落到HTML模板(如
error.html.twig
).
提示
要查看默认错误模板的完整列表,请参见资源/视图/例外
目录TwigBundle
.在标准的Symfony2安装ob娱乐下载中,TwigBundle
可在供应商/ syob娱乐下载mfony / symfony / src / symfony /包/ TwigBundle
.通常,自定义错误页面的最简单方法是从TwigBundle
成app /资源/ TwigBundle /视图/例外
然后修改它。
请注意
向开发人员显示的调试友好的异常页面甚至可以以同样的方式通过创建诸如exception.html.twig
用于标准HTML异常页面或exception.json.twig
JSON异常页面。