使用控制器中的另一个操作处理 post 个操作
Process post action with another action within controller
我有一个设计非常糟糕的应用程序,其中 index
操作在基于 JavaScript 的对话中显示一个表单,提交给 process
操作然后重定向到 index
(无论是成功还是错误)。 process
操作甚至没有视图:
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->data
不会丢失,我有机会以 index.ctp
中生成的形式再次显示它,但我做错了: $this->requestAction()
和 $this->index()
都尝试渲染 process.ctp
。我是在错误地使用它们还是错过了正确的方法?
如果你想运行一个不同的动作,你可以使用Controller::setAction()
,它改变了请求中的action
参数,相应地设置模板渲染,returns 调用操作的可能 return 值。
public function process()
{
// ....
$this->setAction(
'index',
$this->request->data['Unicorn']['foo'],
$this->request->data['Unicorn']['bar']
);
}
另见
我有一个设计非常糟糕的应用程序,其中 index
操作在基于 JavaScript 的对话中显示一个表单,提交给 process
操作然后重定向到 index
(无论是成功还是错误)。 process
操作甚至没有视图:
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->data
不会丢失,我有机会以 index.ctp
中生成的形式再次显示它,但我做错了: $this->requestAction()
和 $this->index()
都尝试渲染 process.ctp
。我是在错误地使用它们还是错过了正确的方法?
如果你想运行一个不同的动作,你可以使用Controller::setAction()
,它改变了请求中的action
参数,相应地设置模板渲染,returns 调用操作的可能 return 值。
public function process()
{
// ....
$this->setAction(
'index',
$this->request->data['Unicorn']['foo'],
$this->request->data['Unicorn']['bar']
);
}
另见