如何自定义错误页面吗
编辑该页面警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 2.4,不再维护。
读这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。
如何自定义错误页面吗
在Symfony任何异常时,内部的异常被捕获ob娱乐下载内核
类和最终转发到一个特殊的控制器,TwigBundle:例外:显示
进行处理。这个控制器,它生活在核心TwigBundle,确定哪些错误模板来显示和状态码,应该设置为给定的例外。
可以定制错误页面在两种不同的方式,这取决于你需要多少控制:
- 自定义错误不同的错误页面的模板;
- 替换默认异常控制器
twig.controller.exception: showAction
。
默认ExceptionController
默认的ExceptionController
将显示一个异常或错误页面,根据设置的kernel.debug
国旗。而异常页面给你很多有用的信息在开发期间,错误页面是显示给最终用户。
覆盖错误的模板
所有的错误模板TwigBundle内生活。覆盖模板,仅仅依靠标准方法覆盖模板,生活在一个包。有关更多信息,请参见创建和使用模板。
例如,覆盖默认的错误模板,创建一个新的模板位于应用程序/资源/ / error.html.twig TwigBundle /视图/异常
:
1 2 3 4 5 6 7 8 9 10 11
< ! DOCTYPEhtml><html><头><元http-equiv=“内容类型”内容=“text / html;charset = utf - 8”/ ><标题>发生错误:{{status_text}}< /标题>< /头><身体><h1>哦!一个错误发生< /h1><h2>服务器返回一个“{{status_code}}{{status_text}}”。< /h2>< /身体>< /html>
谨慎
你不得使用is_granted
在你的错误页面(或布局错误页面使用的),因为路由器防火墙之前运行。如果路由器将抛出一个异常(例如,当线路不匹配),然后使用is_granted
将进一步抛出一个异常。您可以使用is_granted
安全的说{%如果app.user is_granted (“…”) %}
。
提示
如果你不熟悉理解,别担心。嫩枝是一个简单,强大的和可选的模板引擎集成Symfony。ob娱乐下载关于树枝看到的更多信息创建和使用模板。
除了标准的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的目录。标准安装Symfony, Tob娱乐下载wigBundle可以找到供应商/ syob娱乐下载mfony / symfony / src / symfony /包/ TwigBundle
。通常,最简单的方法来定制一个错误页面从TwigBundle复制它app /资源/ TwigBundle /视图/例外
然后修改它。
请注意
debug-friendly异常页面显示开发人员甚至可以定制以同样的方式通过创建模板等exception.html.twig
为标准的HTML页面或异常exception.json.twig
JSON异常的页面。
替换默认异常控制器
如果你需要更多灵活性不仅仅是压倒一切的模板(如您需要传递一些额外变量进入你的模板),然后你可以覆盖控制器,它显示错误页面。
默认异常控制器被注册为一个服务——实际的类ob娱乐下载
。
为此,创建一个新的控制器类,使其延长Symfony的默认ob娱乐下载ob娱乐下载
类。
有几种方法可以覆盖定制错误页面是如何呈现的不同部分。例如,你可以覆盖整个showAction
或仅仅是findTemplate
方法,该方法定位哪个模板应该呈现。
Symfony利ob娱乐下载用异常控制器而不是默认的设置twig.exception_controller在app / config / config.yml选项。
提示
自定义的异常处理实际上是比这里写的更强大。一个内部活动,kernel.exception
,抛出它允许完全控制异常处理。有关更多信息,请参见内部。