Cakephp 2.3:如何将数据数组发送到另一个控制器函数进行渲染?

Cakephp 2.3:如何将数据数组发送到另一个控制器函数进行渲染?,php,cakephp,controller,Php,Cakephp,Controller,我有一个控制器操作,它应该在用户注册之前收集一些初步信息(注意,我还没有连接到auth,没有人在安全plz上发现bug!),然后重定向到相应的控制器操作,但我不知道如何传递整组数据。可能是我太累了,我会在这里醒来,但如果有人能帮我纠正过来,我会很感激的 public function register() { if ($this->request->is('post')) { if ($this->request->url == "

我有一个控制器操作,它应该在用户注册之前收集一些初步信息(注意,我还没有连接到auth,没有人在安全plz上发现bug!),然后重定向到相应的控制器操作,但我不知道如何传递整组数据。可能是我太累了,我会在这里醒来,但如果有人能帮我纠正过来,我会很感激的

public function register() {
        if ($this->request->is('post')) {
            if ($this->request->url == "users/register") {
                $data = $this->request->data('Registration');
                switch($data['UserType']) {
                    case "student_reg":
                    /* I've tried this, and it feels right.. do have I to stop autorender or something? */
                        $this->studentReg($data);
                    break;
                    case "educator_reg":
                    /* and this: */
                        $this->redirect(array("action" => "educatorReg", "params" => $data));
                    break;
                    /* ... and so on.... */
                }
            }
        }
        $this->loadModel("Account");
        $accounts = $this->Account->find( 'all');
        $provinces = Hash::combine($accounts, '{n}.Account.province_id', '{n}.Province.name');
        $this->set(compact('accounts','provinces'));
    }

public function studentReg($data) {// and so forth

如果您只是执行
返回$this->studentReg($data)你应该很好。如果已经渲染了一个视图,Cake不应该渲染另一个视图。

你应该简化你的操作,从长远来看,这么多事情只会给你带来麻烦。如果计划在内部调用方法,则不要将其公开为public(studentReg)。或者最好将所有这些都作为您调用的模型方法。尽量保持控制器的干净、精巧和可读性。我真的很感激这类建议,但我不确定我是否完全遵循了它。需要注意的一点是,各种soandsoReg()函数都有视图,它们本质上是add()的变体。我真正需要实现的是让用户识别一些关于他们自己的信息,这样他们就可以被发送到正确的页面,但要注意的是,如果他们不能,他们将根本不会被发送到任何页面,并且这种预识别不会被保存,这只是确保他们的注册表是正确的一种方式。非常广泛地说,你能建议你如何实施这个吗。谢谢你,太好了。