如何自定义错误模板
当一个错误发生时,一个页面没有找到错误,和内部服务器错误,或其他异常,symfony会显示一个错误页面。ob娱乐下载页面内容取决于环境和要求的格式。
让我们看一个例子,让它更容易解释。您有一个应用程序与一个API模块返回HTML, XML或JSON表示的<代码>文章< /代码>模型。
这是路由配置,使它工作:
/ /应用程序/前端/ config /路由。yml api_article: url: / api /文章/:id。:sf_format参数:{模块:api,行动:}条要求:sf_format: xml (?: html | | json)
和相关的模块:
类apiActions扩展sfActions{公共函数executeArticle(美元的请求){这个美元- >文章= ArticlePeer::retrieveByPK(美元的请求- >getParameter(“id”));这个美元- >forward404Unless(这个美元- >文章);}/ /……}
如果你通过一个不存在的<代码>id< /代码>在请求,转发到行动<代码>404年年< /代码>页面。如果你使用HTML格式(<代码>http://localhost/frontend_dev.php/api/article/1.html< /代码>在开发环境中),你会有这样的一个错误消息:
在生产环境中(<代码>http://localhost/frontend_dev.php/api/article/1.html< /代码>),页面非常不同的原因显而易见的安全:
现在,让我们看看它的表现,当我们改变格式<代码>XML< /代码>在开发环境中(<代码>http://localhost/frontend_dev.php/api/article/1.xml< /代码>):
现在,在生产环境中(<代码>http://localhost/api/article/1.xml< /代码>):
正如你所看到的,返回的错误消息symfony现在请求的格式,XML。ob娱乐下载
这个例子演示了如何自定义404错误信息页面,但这同样适用于其他任何异常。
你甚至可以通过添加一个模板定制每个格式的输出到您的项目目录(<代码>配置/错误/< /代码>)或应用程序目录(<代码>应用程序/前端/ config /错误/< /代码>)。
例如,定制XML输出错误消息,创建一个<代码>配置/错误/ error.xml.php< /代码>文件。ob娱乐下载symfony足够聪明使用自定义模板如果它存在而不是默认的一个:
< ? xml版本=“1.0”编码=“< ?php echo sfConfig::“sf_charset”、“utf - 8”? >”? ><错误><代码>< ? phpecho $code ?>< /代码><消息>< ? phpecho $text ?>< /信息>> < /错误
当你自定义错误消息模板,您可以访问以下变量:
美元的代码< /代码>:响应状态代码
美元的文本< /代码>:响应状态文本
美元的名字< /代码>:类名的例外
美元的消息< /代码>:异常消息的消息
美元的痕迹< /代码>:一个数组,其中包含完整的PHP痕迹
美元的格式< /代码>:请求的格式
也可以自定义输出在开发环境中,即使它是那么有趣,通过创建一个<代码>配置/错误/ exception.xml.php< /代码>。
存储在默认的模板<代码>/数据/ lib /异常< /代码>symfony的目录,是一ob娱乐下载个很好的起点定制模板。
当你创建你自己的格式,您将需要创建适当的错误信息模板(<代码>配置/错误/ error.FORMAT_NAME.php< /代码>和<代码>配置/错误/ exception.FORMAT_NAME.php< /代码>)。
为了缓解任务,您可以包括现有的错误模板。例如,如果您的格式是XML,您可以包括默认的XML错误消息模板:
< ? php包括sfException::getTemplatePathForError(“xml”,真正的)? >
1.2格式支持是另一个例子,symfony拥抱HTTP尽可能多。ob娱乐下载
这个工作许可适用创作共用署名下衍生著作3.0 Unported许可执照。