当特定于生产环境时, 基于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目录中:
文章图片
接下来, 你只需要在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的堆栈跟踪。
文章图片
编码愉快!
推荐阅读
- 如何在JavaScript中从Twig安全地打印字符串变量
- 使用C#和Winforms捕获不同方式的屏幕截图
- 如何在Twig中重复现有的块
- 如何在Symfony 2和3中的模板上使用Twig执行原则查询
- 如何在Symfony 3中使用FFMpeg将webm视频转换为mp4
- C#中的String和string关键字有什么区别
- 如何在Twig中将日期时间对象格式化为ISO 8601
- 如何使用Symfony 3中的免费GeoLite数据库从访问者的IP中检测城市,国家和地区
- 如何检查用户是否已经选中了Google Recaptcha复选框