自定义所有错误symfony 1.4

时间:2012-04-09 09:53:50

标签: symfony1 custom-errors

对不起我的英语并通过翻译写作。

我是新来的,我有点迷失在我想要的地方,也许如果他们愿意,你可以帮助我,如下所述:

我想自定义可能产生的所有错误(任何错误的状态代码.404,500,204,301 ....等)并且还显示基于“模块”的建议和/或发生错误的“动作”。

我也希望通过文件重定向“setting.yml”应用程序来判断,如下所示:

error_404_module: common
error_404_action: errors
error_500_module: common
error_500_action: errors
error_204_module: common
error_204_action: errors
error_301_module: common
error_301_action: errors
........

在“action.class.php”中的“app / frontend / modules / common”中定义“executeErrors”,我在其中收到已发生的状态代码以及发生错误的模块或者除了部分显示“app / frontend / modules / common / templates / _errorXXXSuccess.php”以及我寻找并提取错误发生的模块“referer”的部分建议。

嗯,这就是不同情况下不同类型错误的动态内容,并且与类型代码404完美配合,但与其余类型没有...

我读到可以通过创建文件“config / error.html.php”和“config / exception.html.php”将我放在事件的中间。实际上,如果我产生这样的500错误并手动执行这些文件。问题是从那里我无法从symfony访问变量。因为如果是这样的话,我可以调用“常见/错误”,并将错误状态代码和发生的模块作为参数发送,但事实并非如此。从那里我可以做的就是玩$ _SERVER和routing.yml,但是因为环境与开发生产(/frontend_dev.php)混合而无法获得好结果,这也是我想要避免的。

也就是说,我希望得到“setting.yml”中的“error_404_module”和“error_404_action”但具有不同的错误代码。因此,允许我基于“错误或异常”和/或“模块或操作”在生产中显示我的自定义页面,其中错误已从生产中释放,并且在处于开发模式的情况下(/frontend_dev.php/ .. ..),显示symfony Dispatch。

当然,生活是复杂的,并且有一种更简单的方法来做我想要的但是在数千种组合之后没有得到正确的结果。即使symfony可能不允许从“setting.yml”重定向的其他类型的错误,因为它们是为他或其他东西保留的。我不明白。

请帮助我,因为没有文件可以在这里查找和保护至少我们公开给其他想要做某事的人。

非常感谢和问候!

1 个答案:

答案 0 :(得分:0)

首先 - 你无法让symfony拦截所有错误。某些错误可能是服务器错误,请求甚至无法访问您的应用程序。您可以在symfony中重现其中一些明确设置响应,但我可能没有必要处理所有这些响应。

至于确切的响应:你应该使用一个监听器将你的错误挂钩到一个根据你的需要处理它们的类。有关实施细节,请参阅:https://stackoverflow.com/a/7077818/580167