php - 重置 Zend Action Helper 中的 View

标签 php zend-framework

我正在 ACL 操作助手的预分派(dispatch)方法中检查 ACL。如果允许该操作,则 Controller /操作应正常继续。 (那里没有问题)。但是,如果不允许,我想:

  • 在浏览器中保留请求的 URI
  • 跳过执行请求的操作方法
  • 生成“访问被拒绝”消息

起初我以为我会在 Action Helper 中调用 _forward(),但我不能,因为它是一个 protected 方法。 View Renderer Action Helper 表示 gotoSimple 类似于 _forward,但它仍然执行完整的 http 重定向(从而更改浏览器中的 URI)。

我可以尝试在 View 上调用 setScriptPath(),然后调用 Render(),但这不会阻止请求的 Controller /操作触发。我认为这个问题可能有一个简单的答案,但这超出了我的经验水平!

感谢任何帮助!

最佳答案

这个问题最容易解决,只需抛出一个 Zend_Controller_Action_Exception,最好使用代码 401(未经授权)。

这将被错误处理插件捕获并转发到错误 Controller 。

然后您可以检查此错误代码并进行适当处理。这是在我的错误 Controller 中

if ($errors->exception->getCode() == 401) {
    $this->getResponse()->setHttpResponseCode(401);
    return $this->_forward('unauthorized');
}

“未经授权”操作仅显示一个 View ,但您可以使用它执行更多操作(例如记录错误)

关于php - 重置 Zend Action Helper 中的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6223124/

相关文章:

php - 将 My Zend Framework 应用程序与 Wordpress 集成并进行一次登录

php - Google Docs API - Zend gData - 如何查找集合的 URI

php - 使用 WordPress 将页面上的众多输入之一提交到 mysql 数据库

php - 如果选择了下拉菜单

php - Laravel 5.1 - 在保存到数据库时生成唯一的 10 个字母数字字符代码

javascript - PHP 和 JS | div onclick 播放声音并更改背景

php - 基本 AJAX 请求 Javascript/PHP 不工作

php - 如何在 Zend 中获取查询结果

php - 检查数据库和/或表是否存在

php - 我应该如何组织基于框架的项目的源代码控制?