新在symfoob娱乐下载ny 1.2:错误请求模板和格式
ob娱乐下载symfony 1.1引入本机支持和mime类型不同的格式。
但是有一个丢失:错误的支持。固定在symfony 1.2,由ob娱乐下载于克里斯Wallsmith的伟大的工作。他创建了一个插件来实现这个功能。后来他的插件集成到核心,进一步增强。
所以,sob娱乐下载ymfony 1.2现在方面时当前请求格式呈现任何未捕获异常。
让我们看一个例子,让它更容易解释。您有一个应用程序与一个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娱乐下载
评论
评论都关门了。
以确保评论保持相关,他们关闭了旧的帖子。
http://www.ob娱乐下载symfony-project.org/blog/2008/06/09/how-to-create-an-optimized-version-of-your-website-for-the-iphone-in-symfony-1-1
第一行替换为以下将解决这个问题。
我只是想指出,一旦有人移动他的项目到服务器,短标签在哪里,模板会导致一个错误。