Cakephp 使用控制器内的另一个操作处理post操作

Cakephp 使用控制器内的另一个操作处理post操作,cakephp,cakephp-2.5,Cakephp,Cakephp 2.5,我有一个设计得非常糟糕的应用程序,其中索引操作在基于JavaScript的对话中显示一个表单,提交给ProcessAction,然后在成功或出错时重定向到索引。流程操作甚至没有视图: class UnicornsController { public function index($foo, $bar) { $this->set( array( 'unicorn' => $this->Uni

我有一个设计得非常糟糕的应用程序,其中索引操作在基于JavaScript的对话中显示一个表单,提交给ProcessAction,然后在成功或出错时重定向到索引。流程操作甚至没有视图:

class UnicornsController
{
    public function index($foo, $bar)
    {
        $this->set(
            array(
                'unicorn' => $this->Unicorn->findByFooAndBar($foo, $bar);
            )
        );
    }

    public function process()
    {
        $this->Unicorn->save($this->request->data);
        $this->redirect(
            array(
                'action' => 'index',
                $this->request->data['Unicorn']['foo'],
                $this->request->data['Unicorn']['bar'],
            )
        );
    }
}

我正在添加正确的错误报告。我正在尝试更改this->redirect部分,以便$this->request->数据不会丢失,并且我有机会以index.ctp中生成的形式再次显示它,但我无法正确执行此操作:$this->requestAction和$this->index都尝试渲染process.ctp。我是否错误地使用了它们或缺少正确的方法?

如果要运行其他操作,可以使用Controller::setAction,它会更改请求中的操作参数,相应地设置要呈现的模板,并返回调用操作的可能返回值

public function process()
{
    // ....

    $this->setAction(
        'index',
        $this->request->data['Unicorn']['foo'],
        $this->request->data['Unicorn']['bar']
    );
}
另见