如何发送到 Zend Framework 的自定义错误页面?

2024-01-18

我有可以被阻止的成员,当成员被阻止时我想将它们发送到自定义错误页面,我将如何在 zend 框架中做到这一点?我试过

throw new Zend_Controller_Dispatcher_Exception('Your message here');

但当我这样做时,它并没有说“您的消息在这里”,而是说“找不到页面”。

这是我的错误控制器。

<?php

class ErrorController extends Zend_Controller_Action
{

public function errorAction()
{
    $errors = $this->_getParam('error_handler');

    switch ($errors->type) {
        case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ROUTE:
        case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_CONTROLLER:
        case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ACTION:

            // 404 error -- controller or action not found
            $this->getResponse()->setHttpResponseCode(404);
            $this->view->message = 'Page not found';
            break;

            // 666 error -- controller or action not found
            $this->getResponse()->setHttpResponseCode(666);
            $this->view->message = 'Blocked';
            break;
        default:
            // application error
            $this->getResponse()->setHttpResponseCode(500);
            $this->view->message = 'Application error';
            break;
    }

    // Log exception, if logger available
    if ($log = $this->getLog()) {
        $log->crit($this->view->message, $errors->exception);
    }

    // conditionally display exceptions
    if ($this->getInvokeArg('displayExceptions') == true) {
        $this->view->exception = $errors->exception;
    }

    $this->view->request   = $errors->request;
}

public function getLog()
{
    $bootstrap = $this->getInvokeArg('bootstrap');
    if (!$bootstrap->hasPluginResource('Log')) {
        return false;
    }
    $log = $bootstrap->getResource('Log');
    return $log;
}

}

这是文档,http://framework.zend.com/manual/en/zend.exception.using.html http://framework.zend.com/manual/en/zend.exception.using.html我不明白:(


以下是一些使其发挥作用的建议。

首先,您需要将您的错误与标准区分开来no_route/no_controller/no_action错误。为此,您可以抛出自己的自定义异常(您可以从 PHP 的Exception class.

throw new My_Exception_Blocked('You are blocked');

然后,将错误控制器修改为如下所示:

public function errorAction()
{
    $errors = $this->_getParam('error_handler');

    switch ($errors->type) {
        case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ROUTE:
        case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_CONTROLLER:
        case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ACTION:

            // 404 error -- controller or action not found
            $this->getResponse()->setHttpResponseCode(404);
            $this->view->message = 'Page not found';
            break;

        // check for any other exception
        case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_OTHER:
            if ($errors->exception instanceof My_Exception_Blocked) {
                $this->getResponse()->setHttpResponseCode(403);
                $this->view->message = $errors->exception->getMessage();
                break;
            }
            // fall through if not of type My_Exception_Blocked

        default:
            // application error
            $this->getResponse()->setHttpResponseCode(500);
            $this->view->message = 'Application error';
            break;
    }
}

我还更改了响应代码666 to 403因为没有6xxHTTP 错误代码,这可能会扰乱服务器和/或客户端。

希望有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何发送到 Zend Framework 的自定义错误页面? 的相关文章

  • Zend RegEx Validator 的自定义有意义的错误消息

    我正在验证表单中的文本字段 如下所示 name new Zend Form Element Text name name gt setLabel First Name gt setRequired true gt addFilter new
  • 每当 SQLERROR 永远不起作用时

    我不知道可能是什么原因 我已经在网上花了几个小时试图找出我的情况出了什么问题 我查过官方文档 https docs oracle com cd B19306 01 server 102 b14357 ch12052 htm还有一些汤姆 凯特
  • PHP通知和警告的区别

    当编写代码错误时 可能会出现警告和通知 我知道错误背后的想法 我想警告是为了通知您可能导致错误的事情 但通知不是完全相同吗 我认为通知并不是某件事做得正确的消息 这让我有点困惑 任何人都可以区分这两者之间的区别以及应该如何处理这些消息 通知
  • Zend Framework - 需要从视图访问 GET 参数

    我正在使用 Zend 框架 我需要的是在我的视图中构造一个 url 通常 在常规 php 代码中 我只需使用全局 GET 获取 GET 变量 然而 对于 Zend 我将其设置为清理 URI 如下所示 ac 列表 过滤器 作品 页面 2 好像
  • Scala:将整个列表的 Either 与每个元素的 Either 组合

    我有一个 Either 列表 它代表错误 type ErrorType List String type FailFast A Either ErrorType A import cats syntax either val l List
  • 模板类中的无效数据类型生成编译时错误?

    我正在使用 C 创建一个字符串类 我希望该类仅接受数据类型 char 和 wchar t 并且我希望编译器在编译时使用 error 捕获任何无效数据类型 我不喜欢使用assert 我怎样才能做到这一点 您可以使用静态断言 促进提供一个 ht
  • 在 Unix 上,我应该对 errno 使用 system_category 还是 generic_category ?

    C 0x 有两个预定义的error category对象 generic category and system category 据我目前所知 system category 应用于操作系统返回的错误 并且generic category
  • 不要因 HTTP 错误 403 而停止

    在我的 Selenium 测试用例之一中 我尝试确保某些页面无法访问 相反 应给出 HTTP 返回代码 403 然而 这里 Selenium 终止测试执行 但出现以下异常 com thoughtworks selenium Selenium
  • 如何让 ASP.NET MVC 遵守我的自定义错误设置?

    在 web config 的 customErrors 标记中 我指向一个控制器 在我的控制器中 我重定向到由多个应用程序共享的外部错误页面
  • 如何处理java.util.concurrent.ExecutionException异常?

    我的代码的某些部分抛出 java util concurrent ExecutionException 异常 我该如何处理这个问题 我可以使用 throws 子句吗 我对java有点陌生 这取决于您的任务关键程度Future是为了如何处理它
  • 我是否需要破解 ZendFramework1.10.8/Doctrine1.2.2 才能生成模型?

    我已经开始阅读 zend 框架 它与 Doctrine 一起使用 并实现了一个小项目来掌握理解 我已经到了需要生成模型的地步 就像拥有一个生成脚本一样 如 Doctrine 1 2 中建议的那样 2 pdf 手册 经过几次不成功的尝试 例如
  • 错误:Javascript 上的 [object Object]

    当我在 Firebug 中运行下面的 javascript 时 我不断收到错误 我已经尝试更改多项内容 但它仍然输出错误 我正在使用 api 从 XML 检索信息 然后将其输出到屏幕上 但我不断收到对象错误 有人能看出为什么吗 任何帮助表示
  • VB6中VarType返回的vbError是什么?

    我一直在网上搜索这个 但一切都在谈论ErrObject类 或常量vbError由返回VarType功能 我想知道那个类型实际上是什么is 例如一个integer是这样的4 a string是这样的 hello world etc 对于一点背
  • Zend Framework - Flashmessenger - 只有一个字符

    我在使用 FlashMessenger 时遇到了一些问题 当我想检索布局中的消息时 它会写入消息的第一个字母 示例 test 显示 t 我尝试了发布的解决方案这个问题 https stackoverflow com questions 10
  • Javascript:如何捕获使用 window.location.href = url 导航到的页面上的错误

    我正在使用 REST 服务生成一个 CSV 文件 我想提示用户下载该文件 该服务的示例如下 https localhost 8444 websvc exportCSV viewId 93282392 为了提示用户下载文件 我使用以下代码 w
  • Zend 框架:Zend_Oauth 和 Zend_Service_Twitter

    首先 我能够使用 Oauth 成功进行身份验证 我正在使用在这里找到的 Padraic 教程 http blog astrumfutura com archives 411 Writing A Simple Twitter Client U
  • 如何在 vb.net 中使用 Stacktrace 返回错误行号

    我正在尝试创建某种错误捕获方法来返回错误行号 当进程中止时 我们会发送一封中止电子邮件 该电子邮件为我们提供了错误号 and 错误描述但我想知道实际上哪里出了错误 我知道你可以执行以下操作 1 code here 2 code here 3
  • 如何处理用户界面中的数据库约束违规?

    我们使用存储过程在数据库中实现大部分业务规则 我永远无法决定如何最好地将数据约束违规错误从数据库传递回用户界面 我所说的约束更多地与业务规则相关 而不是与数据完整性相关 例如 诸如 无法插入重复的键行 之类的数据库错误与业务规则 不能有多个
  • 如何处理 Nuxt 中导致页面渲染崩溃的 apollo 客户端错误?

    我目前正在维护一个生产 Nuxt js Vue 应用程序 该应用程序集成了 GraphQL Apollo 客户端 该客户端遇到页面渲染错误 为了增加获得回复的机会 我构建了一个简单的代码示例 仅展示我们遇到的问题 谢谢大家 源代码 Clie
  • PayPal 网关已拒绝请求。安全标头无效(#10002:安全错误 Magento

    在 magento 中增加 PayPal 预付款 我已填写 magento admin 中的所有凭据 但是当我进入前端并单击 pay pal 按钮时 它给出了 PayPal 网关已拒绝请求 安全标头无效 10002 安全错误 我用谷歌搜索了

随机推荐

  • JDK7 中菱形接口的意外行为

    我的 JSF 托管 bean 中有一个属性 private List
  • Android ImageView 设置 Bitmap FitXY 不起作用

    我已经尝试了很长时间来设置位图 使其适合ImageView界限 它只是不起作用scaleType fitXY 我的位图图像尺寸小于ImageView的 保存为 100X100 像素 我希望我的位图图像适合并拉伸到ImageView 这是一些
  • 如何设置 dll 的入口点

    首先 我认为 dll DLLMain 中的入口点 但是当我尝试在 C 中导入它时 我收到一个错误 找不到入口点这是我的代码 include
  • 不使用 Apache POI 解析 Excel 文件

    我知道我们可以使用 Apache POI 来解析 Excel 文件并获取数据 但我听说一个奇怪的事情 Excel 文件可以以与我们解析 CSV 类似的方式传递 就像从文件流中读取文件并用 逗号 分隔符分隔每个列值 当我们解析Excel时 我
  • 默认 Java 密钥库包含哪些密钥?

    我了解默认的 Java 信任库包含根证书和其他与信任相关的证书 但是 默认 Java 密钥库中存储了哪些密钥 据我所知 密钥库用于 在 SSL 握手期间应将哪些身份验证凭据发送到远程主机进行身份验证 如果您是 SSL 服务器 您将在密钥交换
  • Solr (JVM) 每小时峰值

    SOLVED 在我们的例子中 问题是 SuggestRequestHandler requestHandler name suggest 现在已经设置了facelimit 10 此外 应用程序提出的每个建议请求都有多个请求 为什么这会导致
  • 在 WPF MVVM 中动态添加控件

    我正在开发一个动态搜索视图 其中单击按钮应添加一个包含 3 个组合框和 2 个文本框的新行 我该怎么做呢 如果您真的想做 mvvm 请尝试忘记 如何添加控件 您不必这样做 只需考虑您的视图模型 WPF 会为您创建控件 在您的情况下 假设我们
  • 使用 Comparable 比较通用变量

    对于我班级中的一个作业 我们有一个名为 Pair 的类的集合 我们需要根据键的值按升序对其进行排序 如果键是字符串或整数 我可以应用此方法 但是如何编写代码来比较我的项目 当它们是通用的时 如下所示 我班上的教授解释了如何处理整数或字符串
  • 为什么显示“更新Git索引失败”

    我正在使用Windows 当暂存文件时 我收到此错误 Updating the Git index failed A rescan will be automatically started to resynchronize git gui
  • 添加 HTTPS 支持会导致循环重定向

    我在 Web 应用程序中使用 Spring Security 框架 我已经安装了 SSL 证书并且能够通过以下方式访问我的应用程序https 现在 当我添加requires channel https 归属于所有人intercept url
  • AngularJS element.innerHTML 在指令中未定义

    假设我有 directives directive foo function return restrict A scope true link function scope element attr console log innerHT
  • 在单个“setup.py”中多次调用“setup()”是否安全?

    我正在开发一个包含 Cython 扩展的包 根据https github com pypa pip issues 1958 https github com pypa pip issues 1958我将使用setup requires并推迟
  • iOS5.1:同步任务(等待完成)

    我在同步 openWithCompletionHandler UIManagedDocument 与主要活动时遇到一个基本问题 情况 我有一个管理共享 UIManagedDocument 的单例类 这个类提供了一种应该交付的方法the文档处
  • 如何在 Android 模拟器中安装 .apk 文件? [复制]

    这个问题在这里已经有答案了 我想在 android 模拟器中安装我的 apk 文件 但是我打开了多个模拟器 5554 5556 并且我不想关闭任何一个模拟器 当有多个模拟器时如何在模拟器中安装 apk 文件模拟器打开了吗 你可以告诉adb您
  • 获取 play.api.libs.json.JsValue 的所有键

    我必须存储play api libs json JsValue列表的键 我如何做到这一点 var str json String val json JsValue Json parse str val data json data prin
  • 使用 sort() 对 unordered_map 进行排序 [重复]

    这个问题在这里已经有答案了 我正在尝试排序unordered map using sort 函数 但我不断收到编译器错误 有人可以帮忙吗 bool comp pair
  • MVC路由静态文件

    我正在使用一个旧版 swf 文件 该文件在控制器 操作路由中查找静态路由 例如 它正在尝试下载文件 http localhost 59801 Resource Details ClearExternalPlaySeekMute swf 当文
  • Android Studio:编译器发生异常(1.8.0_152-release)

    运行应用程序时 无法完成编译 继续抛出错误 我正在使用 dagger2 库进行注释 错误 15 04 36 466 错误 system err 编译器 1 8 0 152 release 中发生异常 请针对以下错误提交错误 Java 编译器
  • XCode“上传期间发生错误,rsync:失败”

    The last archives I ve made turn out into this error 日志显示此信息 此日志中省略了应用程序名称和路由 2016 06 28 08 53 48 0000 MT Upload failed
  • 如何发送到 Zend Framework 的自定义错误页面?

    我有可以被阻止的成员 当成员被阻止时我想将它们发送到自定义错误页面 我将如何在 zend 框架中做到这一点 我试过 throw new Zend Controller Dispatcher Exception Your message he