我有一个经过精心设计的应用程序,其中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
。我是不正确地使用它们还是缺少正确的方法?
答案 0 :(得分:1)
如果要执行其他操作,则可以使用Controller::setAction()
,它会更改请求中的action
参数,将模板设置为相应地呈现,并返回调用的可能的返回值行动。
public function process()
{
// ....
$this->setAction(
'index',
$this->request->data['Unicorn']['foo'],
$this->request->data['Unicorn']['bar']
);
}
另请参见