2

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

我是新来的,我对我想要的东西有点迷茫,如果他们愿意,也许你可以帮助我,如下所述:

我想自定义可能产生的所有错误(任何错误的状态代码。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”重定向其他类型的错误,也是因为它们是为他或其他东西保留的。我不明白。

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

非常感谢和问候!

4

1 回答 1

0

首先——你不能让 symfony 拦截所有的错误。一些错误可能是服务器错误,请求甚至不会到达您的应用程序。你可以在 symfony 中重现其中一些显式设置响应,但我可能没有必要处理所有这些。

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

于 2012-04-21T15:08:49.487 回答