Zend framework Zend重定向器操作助手的说明

Zend framework Zend重定向器操作助手的说明,zend-framework,zend-controller,Zend Framework,Zend Controller,对Zend Redirector Action Helper的工作原理有全面的解释吗?我已经阅读了参考指南,但仍然不是100%清楚。例如: 显然,goToSimple()更像一个forward(),而不是重定向。这是否意味着它不会将重定向消息发送回浏览器 如果我想将重定向消息发送回浏览器,我应该使用哪个重定向器方法 有没有一种方法可以获得forward()类型的行为,而无需重新执行Action Helpers的init()方法 这个问题是在我实现ACL时出现的。我有一个ACL操作助手,它的i

对Zend Redirector Action Helper的工作原理有全面的解释吗?我已经阅读了参考指南,但仍然不是100%清楚。例如:

  • 显然,goToSimple()更像一个forward(),而不是重定向。这是否意味着它不会将重定向消息发送回浏览器

  • 如果我想将重定向消息发送回浏览器,我应该使用哪个重定向器方法

  • 有没有一种方法可以获得forward()类型的行为,而无需重新执行Action Helpers的init()方法


这个问题是在我实现ACL时出现的。我有一个ACL操作助手,它的init()方法添加了角色“current”。当我使用重定向程序的goToSimple()时,我会收到一个错误,表明该角色已注册。我可以使用
if(!$acl->hasRole('current'))
,但是我认为最好不要首先重新执行帮助程序的init()。

不太全面,只是简单介绍一下重定向程序

重定向程序比常规的PHP重定向稍多一些,您可以在脚本中使用
标题('Location:www.domain.com/new/Location')
,然后是
exit()

如果您查看Zend\u Controller\u Action\u Helper\u Redirector,它最终会执行完全相同的操作;如果$\u exit==true(默认值),则所有操作都会导致调用
header()
redirectAndExit()
,并以调用
exit()
结束。但是,它会正确地终止框架,主要是会话(如果有)

重定向程序不会在内部转发,除非您使用
setCode()
设置了另一个代码,否则它会发回默认的302代码

方法
gotoRoute()
gotoSimple()
为您组装目标URL并调用
redirectAndExit()
,但仅当
$\u exit==true
时。或者你可以使用他们的兄弟
gotoRouteAndExit()
gotoSimpleAndExit()
,它们将立即退出。gotoSimple方法传递给setGotoSimple,它使用一些方法为您组装URL


在您的例子中,我只能假设
setGotoSimple
方法和其中的一个方法调用目标控制器并启动init()方法;但是,仅用于检查,而不用于转发。

不太全面,只是一些关于重定向器的简要说明

重定向程序比常规的PHP重定向稍多一些,您可以在脚本中使用
标题('Location:www.domain.com/new/Location')
,然后是
exit()

如果您查看Zend\u Controller\u Action\u Helper\u Redirector,它最终会执行完全相同的操作;如果$\u exit==true(默认值),则所有操作都会导致调用
header()
redirectAndExit()
,并以调用
exit()
结束。但是,它会正确地终止框架,主要是会话(如果有)

重定向程序不会在内部转发,除非您使用
setCode()
设置了另一个代码,否则它会发回默认的302代码

方法
gotoRoute()
gotoSimple()
为您组装目标URL并调用
redirectAndExit()
,但仅当
$\u exit==true
时。或者你可以使用他们的兄弟
gotoRouteAndExit()
gotoSimpleAndExit()
,它们将立即退出。gotoSimple方法传递给setGotoSimple,它使用一些方法为您组装URL

在您的例子中,我只能假设
setGotoSimple
方法和其中的一个方法调用目标控制器并启动init()方法;但是,仅用于检查,不用于转发