3

我正在创建一个简单的网站,用户可以在其中注册,然后登录并添加文本文章。如果不登录,访问者将拥有访客角色,并且只能查看文章。我在 Zend 框架 1 中做这个练习,因为我刚刚开始学习 Zend。我将为登录创建一个控制器 AuthController,但我想知道如何从 IndexController 中的 indexAction 重定向到该控制器中的登录操作。另外,如何使用自定义插件来实现这种访问控制?我该如何调用它?

4

4 回答 4

17

jalpesh 和 Hasina 的简短回答都是正确的。

Jalpesh 的示例将是对 action helper 的速记调用redirector(),它默认为gotoSimple()重定向方法,但他似乎将参数反向。

//corrected
$this->_helper->redirector($action, $controller);

将更详细地称为:

$this->getHelper('Redirector')->gotoSimple($action, $controller = null, $module = null, array $params = array());

有几种方法可以使用Redirector 操作助手,这只是一个非常常见的示例。

Hasina 提供的示例是对控制器实用程序方法_redirect()的调用,这是一个比帮助程序更有限的代码,Redirector但仍然非常有用。

//only accepts a url string as the first arg
//deprecated as of ZF 1.7 still in documentation
$this->_redirect($url, array $options = array());

显然,从 ZF 1.7 开始,文档中没有一种新方法(在 docblock 中找到此位),这是首选:

//valid as of ZF 1.7, not in documentation
$this->redirect($url, array $options = array());

这两种实用程序方法都是代理:

 Zend_Controller_Action_Helper_Redirector::gotoUrl()

希望这可以帮助

于 2013-05-30T11:15:27.097 回答
11

您可以使用以下方式在操作方法内重定向:

$this->redirect('/module/controller/action/');
于 2013-05-30T10:08:01.513 回答
2

如果您正在使用路线,您可以使用$this->getHelper('Redirector')->setGotoRoute(array(), 'routeName');

于 2013-11-30T13:08:25.390 回答
0

我认为这会对你有所帮助

$this->_helper->redirector('controller','action');

通过这种方式,您可以调用另一个控制器。

于 2013-05-30T10:10:24.577 回答