我正在创建一个简单的网站,用户可以在其中注册,然后登录并添加文字文章。如果没有登录,访问者将拥有访客的角色,并且只能查看文章。我这样做是作为Zend框架1中的练习,因为我刚开始学习Zend。我将创建一个控制器AuthController用于登录,但我想知道如何从IndexController中的indexAction重定向到该控制器中的登录操作。另外,如何使用自定义插件来实现这种访问控制?我该如何调用它?
答案 0 :(得分:17)
jalpesh和Hasina的答案都很正确。
Jalpesh的示例是对动作助手redirector()
的简写调用,默认为gotoSimple()
重定向方法,除非他似乎有向后的参数。
//corrected
$this->_helper->redirector($action, $controller);
将更加详细地称为:
$this->getHelper('Redirector')->gotoSimple($action, $controller = null, $module = null, array $params = array());
有几种方法可以使用Redirector action helper,这只是一个非常常见的例子。
Hasina提供的示例是对控制器utility method _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()
希望这有帮助
答案 1 :(得分:11)
您可以使用以下方法在操作方法中重定向:
$this->redirect('/module/controller/action/');
答案 2 :(得分:2)
如果您使用路线,可以使用$this->getHelper('Redirector')->setGotoRoute(array(), 'routeName');
答案 3 :(得分:0)
我认为这会对你有所帮助
$this->_helper->redirector('controller','action');
通过这种方式你可以调用另一个控制器。