Zend Framework路由/重定向

时间:2012-05-03 16:57:39

标签: zend-framework

我试图在用户注册后将用户重定向到已注册的页面,但它没有这样做..

<?php

class RegisterController extends Zend_Controller_Action
{

    public function init()
    {
        /* Initialize action controller here */
    }

    public function indexAction()
    {
        $form = new Application_Form_Register();
        $form->submit->setLabel('Register');
        $this->view->form = $form;
        if ($this->getRequest()->isPost()) {
            $formData = $this->getRequest()->getPost();
            if ($form->isValid($formData)) {
                $first_name = $form->getValue('first_name');
                $surname = $form->getValue('surname');
                $email = $form->getValue('email');
                $username = $form->getValue('username');
                $password = $form->getValue('password');
                $is_admin = $form->getValue('is_admin');
                $age = $form->getValue('age');
                $gender = $form->getValue('gender');
                $uni = $form->getValue('uni');
                $register = new Application_Model_DbTable_Users();
                $register->addUser($first_name, $surname, $email, $username, $password, $is_admin, $age, $gender, $uni);

            } else {
                $form->populate($formData);
            }
            $route = array('controller'=>'Register', 'action'=>'registered');
                    $this->_helper->redirector->gotoRoute($route);

        }
    }

    public function registeredAction()
    {
        // action body
    }

}

这就是我所拥有的

由于

2 个答案:

答案 0 :(得分:2)

在控制器中,您可以执行以下操作:

$this->_redirect('/controller/action');

答案 1 :(得分:2)

我通常不使用gotoRoute()因此我不确定这是否是您问题的原因,但您的控制器名称应该全部是小写的,即Register应该是register或者gotoRouteAndExit()可能会解决您的问题(只需快速浏览一下API

你可以尝试另一种方法:对于动作/控制器之间的路由,我发现以下最方便:

$this->_helper->redirector('registered');

将在同一个控制器中将您重定向到registeredAction。如果你想在不同的控制器中进行操作,只需将控制器添加为第二个参数,如下所示:

$this->_helper->redirector('registered', 'register');