为Symfony 1.4中的异常实现自定义500错误页面

当特定于生产环境时, 基于Symfony 1.4的项目中显示的异常消息” 糟糕, 发生错误” 。 Symfony的默认错误页面对用户很有帮助, 它基本上说, 由于” x” 原因, 他们无法做到的事情。
通常, 你不希望向用户显示异常的原因, 你只想注意到他出了点问题, 但是显示与整个项目的设计相关的错误页面非常重要。为什么在Symfony 1.4中可以通过自定义页面覆盖默认的500错误页面。在本文中, 我们将向你展示如何通过仅在项目的特定目录中创建一个新文件来覆盖它。
创建自定义500错误页面 要自定义生产环境中symfony使用的500错误页面, 你将需要在整个应用程序或每个子应用程序级别的/ config文件夹内创建一个名为error的新目录, 例如yourproject / config(对于特定于非子应用程序的目录)错误页面), 或者如果你有子应用程序yourproject / apps / < my-app> / config。在此目录内, 你只需要创建一个名称为error.html.php的空PHP文件。例如, 在我们的项目中, 我们有2个子应用程序, 但是我们都希望为它们提供一个错误页面, 因此我们将错误模板放置在项目的config / error目录中:

为Symfony 1.4中的异常实现自定义500错误页面

文章图片
接下来, 你只需要在error.html.php中编写HTMl模板, 请注意, 你也将能够完成与Symfony 1.4相关的PHP工作。例如, 使用开源500错误页面, 我们的error.html.php模板的内容可能类似于:
< ?php // yourproject/config/error/error.html.php ?> < !DOCTYPE html> < html lang="en"> < head> < !-- Simple HttpErrorPages | MIT License | https://github.com/AndiDittrich/HttpErrorPages --> < meta charset="utf-8" /> < meta http-equiv="X-UA-Compatible" content="IE=edge" /> < meta name="viewport" content="width=device-width, initial-scale=1" /> < title> We've got some trouble | 500 - Webservice currently unavailable< /title> < style type="text/css"> /*! normalize.css v5.0.0 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif; line-height:1.15; -ms-text-size-adjust:100%; -webkit-text-size-adjust:100%}body{margin:0}article, aside, footer, header, nav, section{display:block}h1{font-size:2em; margin:.67em 0}figcaption, figure, main{display:block}figure{margin:1em 40px}hr{box-sizing:content-box; height:0; overflow:visible}pre{font-family:monospace, monospace; font-size:1em}a{background-color:transparent; -webkit-text-decoration-skip:objects}a:active, a:hover{outline-width:0}abbr[title]{border-bottom:none; text-decoration:underline; text-decoration:underline dotted}b, strong{font-weight:inherit}b, strong{font-weight:bolder}code, kbd, samp{font-family:monospace, monospace; font-size:1em}dfn{font-style:italic}mark{background-color:#ff0; color:#000}small{font-size:80%}sub, sup{font-size:75%; line-height:0; position:relative; vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio, video{display:inline-block}audio:not([controls]){display:none; height:0}img{border-style:none}svg:not(:root){overflow:hidden}button, input, optgroup, select, textarea{font-family:sans-serif; font-size:100%; line-height:1.15; margin:0}button, input{overflow:visible}button, select{text-transform:none}[type=reset], [type=submit], button, html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner, [type=reset]::-moz-focus-inner, [type=submit]::-moz-focus-inner, button::-moz-focus-inner{border-style:none; padding:0}[type=button]:-moz-focusring, [type=reset]:-moz-focusring, [type=submit]:-moz-focusring, button:-moz-focusring{outline:1px dotted ButtonText}fieldset{border:1px solid silver; margin:0 2px; padding:.35em .625em .75em}legend{box-sizing:border-box; color:inherit; display:table; max-width:100%; padding:0; white-space:normal}progress{display:inline-block; vertical-align:baseline}textarea{overflow:auto}[type=checkbox], [type=radio]{box-sizing:border-box; padding:0}[type=number]::-webkit-inner-spin-button, [type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield; outline-offset:-2px}[type=search]::-webkit-search-cancel-button, [type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button; font:inherit}details, menu{display:block}summary{display:list-item}canvas{display:inline-block}template{display:none}[hidden]{display:none}/*! Simple HttpErrorPages | MIT X11 License | https://github.com/AndiDittrich/HttpErrorPages */body, html{width:100%; height:100%; background-color:#21232a}body{color:#fff; text-align:center; text-shadow:0 2px 4px rgba(0, 0, 0, .5); padding:0; min-height:100%; -webkit-box-shadow:inset 0 0 100px rgba(0, 0, 0, .8); box-shadow:inset 0 0 100px rgba(0, 0, 0, .8); display:table; font-family:"Open Sans", Arial, sans-serif}h1{font-family:inherit; font-weight:500; line-height:1.1; color:inherit; font-size:36px}h1 small{font-size:68%; font-weight:400; line-height:1; color:#777}a{text-decoration:none; color:#fff; font-size:inherit; border-bottom:dotted 1px #707070}.lead{color:silver; font-size:21px; line-height:1.4}.cover{display:table-cell; vertical-align:middle; padding:0 20px}footer{position:fixed; width:100%; height:40px; left:0; bottom:0; color:#a0a0a0; font-size:14px}< /style> < /head> < body> < div class="cover"> < h1> Webservice currently unavailable < small> Error 500< /small> < /h1> < p class="lead"> An unexpected condition was encountered. < br /> Our service team has been dispatched to bring it back online.< /p> < /div> < /body> < /html>

【为Symfony 1.4中的异常实现自定义500错误页面】最后, 使用以下命令清除symfony项目的缓存:
php symfony cc

每当生产环境中引发异常时, 你都会看到自定义错误页面:
注意 不要忘记, 要测试页面, 你将需要处于生产环境中(没有frontend_dev.php), 而不是开发环境中。否则, 你将始终看到Symfony的堆栈跟踪。
为Symfony 1.4中的异常实现自定义500错误页面

文章图片
编码愉快!

    推荐阅读