在同一个控制器中调用不同的动作

时间:2012-07-11 09:38:28

标签: php zend-framework controller

我正在开发一款小应用。使用php和Zend Framework。我有一个表单,我使用它的控制器来查看表单。现在我需要操纵表单数据并相应地重定向用户。 这是我的控制器

<?php

class NewuserController extends Zend_Controller_Action {

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

public function newuserAction()
{
    $this->view->newuser;
}

public function adduserAction(){

    $data = $this->getRequest()->getParams();
    $u = new User();
    $u->setUserName($data['uName']);
    $u->setPrepwd($data['pwd']);
    $u->setPrepwd($data['pwd']);
    if($u->isEqual()){
        $val = $u->addUsers();
        if($val)
            $this->_helper->redirector('main','main');
    }
    else
        $this->_helper->redirector('newuser','newuser');


}
}

?>

我的观点是newuser.phtml。在我已指定action的{​​{1}}的{​​{1}}属性中<form>。但是当我提交表单时,它会再次显示Newuser/adduser

这是为什么?

提前致谢

Charu

2 个答案:

答案 0 :(得分:1)

您可以转发请求,而不是重定向:

$this->_forward('newuser');

答案 1 :(得分:1)

我建议您使用重定向器帮助程序而不是foward,因为如果您希望用户通过foward重定向到主页面,它将重定向但不会更改URL,因此如果他们要将页面加入书签例如,它不会工作。如果您使用重定向器,它将重定向并更改网址以仅显示您的主要phtml页面。此外,如果您在同一个控制器中,则不必包含作为控制器的第二个参数。检查一下以获得更多帮助

http://framework.zend.com/manual/en/zend.controller.actionhelpers.html#zend.controller.actionhelpers.redirector