CakePHP2.3:带有参数的控制器方法在重定向上抛出“未找到请求的地址”

时间:2013-10-28 22:34:52

标签: php controller cakephp-2.3

目标:收集一些基本的预注册信息,以便获取正确的视图,并管理其他一些细节。

问题:我似乎无法将任何内容传递给预期的方法;如果我没有传递任何内容,else条件将进行评估并发生重定向。但是,如果$preReg被传递,无论它包含什么我都无法摆脱这个错误:

  

无效用户错误:请求的地址

     

'/ myAppName /用户/ registerUser / USERTYPE%26安培%3B7%26安培%3B3%26安培%3B1%26安培%3B5%26安培%3B%26安培%3B%26安培%3B'

     在此服务器上找不到

这是最初的方法:

public function register() {
            if ($this->request->is('post')) {
                if ($this->request->url == "users/register") {
                    $this->redirect("registerUser/".urlencode(implode("&",$this->request->data('Registration'))));
                }
            }
                 // various other logic
}

哪个应该将一些完全不敏感但有用的信息传递给同一个控制器的另一个方法:

public function registerUser($preReg = null) {
        if ($preReg) {
            $data = explode("&",urldecode($preReg));
            $this->view($preReg['UserType']);
            $groups = $this->User->Group->find('all', array('conditions' => array("name =".strtolower(substr($preReg['UserType'], -4)))));
            $this->set(compact($groups, $data));
        } else {
            $this->Session->setFlash("A few details are required before registration can begin. Please fill out the form below.");
            $this->redirect("register");
        }
    }

目前看来,这很简单:

<h1>THIS IS HOW I KNOW I GOT HERE</h1>
<?php pr($this->request);?>

我很想理解为什么这种情况发生以及我做错了什么,特别是在我的思考方面。任何人吗?

1 个答案:

答案 0 :(得分:0)

原来我只是一个小块;这是Cake无法解析URL时的标准错误消息。在上述情况中,registerUser()方法没有正确完成; $this->view()不是设置视图的正确方法(应该使用对$this->render($preReg['UserType']的调用。我破坏的控制器逻辑创建了一个环境,其中Cake的内部逻辑无法解析我的URL我意外地干扰了它。