Php Zend framework\u重定向url保持不变

Php Zend framework\u重定向url保持不变,php,zend-framework,Php,Zend Framework,我试图用Zend框架重定向,但发生了一些我无法理解的非常奇怪的事情 首先,您位于token.phtml,loginform操作如下所示: <?php print $this->url(array('controller' => 'login', 'action' => 'login'));?>" 但URL会像您登录的地方一样更改为URL。如果我在Firefox中查看页面源代码,它会显示登录页面的源代码 但是它确实会转到令牌.phtml,因为它输出,一切都很好。改变

我试图用Zend框架重定向,但发生了一些我无法理解的非常奇怪的事情

首先,您位于
token.phtml
loginform
操作如下所示:

<?php print $this->url(array('controller' => 'login', 'action' => 'login'));?>"
但URL会像您登录的地方一样更改为URL。如果我在Firefox中查看页面源代码,它会显示登录页面的源代码


但是它确实会转到
令牌.phtml
,因为它输出
,一切都很好。

改变你的方式:如果错误登录保持在同一页面,则显示消息错误,如果正确登录,则重定向到你想要的位置: 尝试更改动作控制器,以便:

public function loginAction()
{
    $form = new Form_Login();
    if ($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())) {
        //stuff check login
        $loginResult = //call method check, if bad return message error

        if (true === $loginResult) {
            //login success redirect where you want
            $this->_helper->redirector('index', 'index');
        } else {
            // auth failed
            foreach ($loginResult as $field => $message) {
                $form->getElement($field)->addError($message);
            }
        }
    }
    $this->view->form = $form;
}

尝试将表单操作保留为空,这样您将在操作中获得请求。在tokenAction中,检查用户是否存在以及所有这些内容,如果为true,则重定向到登录操作

$this->_helper->redirector->gotoRoute(
                array(
                   // route like:
                       'controller' => 'login'
                       'action' => 'login'
                    ), 
                'routenameifyouwant'
            );

显然,jquerymobile导致了这个问题。
jquery mobile通过AJAX自动提交表单,如果我关闭AJAX,URL更改和源代码更改都正确。

您好,欢迎使用StackOverflow。请您将loginAction()的部分或全部代码发布到IndexController.php中,这样我们就可以看到可能发生的情况了。我尝试过这样做,但现在url停留在token.phtml,源代码也来自token.phtml,但当发现用户时,html输出是login。下面的问题与此相同,现在,当找到一个用户时,url保持在token.phtml。源是相同的,但html输出不是
$this->_helper->redirector->gotoRoute(
                array(
                   // route like:
                       'controller' => 'login'
                       'action' => 'login'
                    ), 
                'routenameifyouwant'
            );