加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

symfony 1.4:如何将异常消息传递给error.html.php?

发布时间:2020-12-14 21:19:15 所属栏目:资源 来源:网络整理
导读:我尝试使用 http://www.symfony-project.org/cookbook/1_2/en/error_templates中描述的特殊变量$message,但似乎这个变量没有在symfony 1.4中定义,至少它不包含传递给异常的消息这种方式抛出新的sfException(‘some message’) 你知道其他方法将此消息传递给e
我尝试使用 http://www.symfony-project.org/cookbook/1_2/en/error_templates中描述的特殊变量$message,但似乎这个变量没有在symfony 1.4中定义,至少它不包含传递给异常的消息这种方式抛出新的sfException(‘some message’)

你知道其他方法将此消息传递给error.html.php吗?

解决方法

您需要进行一些自定义错误处理.我们自己实施了一个自定义symfony动作.但是要小心,这个动作本身也可能引发异常,你需要考虑到这一点.

以下可能是一个好的开始.首先为事件添加一个监听器,一个好的地方是ProjectConfiguration.class.php:

$this->dispatcher->connect('application.throw_exception',array('MyClass','handleException'));

使用事件处理程序可能足以满足您对异常的要求,例如,如果您只想将堆栈跟踪邮寄给管理员.我们希望转发自定义操作以显示和处理反馈表单.我们的事件处理程序看起来像这样:

class MyClass {
  public static function handleException(sfEvent $event) {
    $moduleName = sfConfig::get('sf_error_500_module','error');
    $actionName = sfConfig::get('sf_error_500_action','error500');
    sfContext::getInstance()->getRequest()->addRequestParameters(array('exception' => $event->getSubject()));
    $event->setReturnValue(true);
    sfContext::getInstance()->getController()->forward($moduleName,$actionName);
  }
}

您现在可以配置模块和操作以转发到settings.yml中的异常

all:
  .actions:
    error_500_module:       error
    error_500_action:       error500

在动作本身中,你现在可以做任何你想要的例外,例如.显示反馈表单以联系管理员.您可以使用$request-> getParameter(‘exception’)来获取异常

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读