2

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

<?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
    }

}

这就是我所拥有的

谢谢

4

2 回答 2

2

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

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

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

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

$this->_helper->redirector('registered', 'register');
于 2012-05-04T07:39:49.230 回答
2

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

$this->_redirect('/controller/action');
于 2012-05-04T06:11:04.827 回答