通常,如果我使用 CakePHP 的魔法并验证表单,那么它将“保留表单”,这意味着用户不必重新输入所有内容。此外,默认情况下,CakePHP 会标记所有未通过验证的字段。我的问题是,既然我将所有的表单数据发送到一个 API,我怎样才能仍然使用 CakePHP 的所有魔法?
我研究了自定义验证方法,但问题是我必须一次将所有数据发送到 API,并且我会立即返回所有错误(计费信息)。
通常,如果我使用 CakePHP 的魔法并验证表单,那么它将“保留表单”,这意味着用户不必重新输入所有内容。此外,默认情况下,CakePHP 会标记所有未通过验证的字段。我的问题是,既然我将所有的表单数据发送到一个 API,我怎样才能仍然使用 CakePHP 的所有魔法?
我研究了自定义验证方法,但问题是我必须一次将所有数据发送到 API,并且我会立即返回所有错误(计费信息)。
那么你做错了。默认的“蛋糕”方式是保持表单 - 甚至(或特别是)在不成功的验证之后
但是,如果没有看到实际代码,就无法告诉您更多信息。查看烘焙模板以及它是如何正确完成的。那么您的问题会立即自行解决。
也许您在错误验证后从数据库中设置了 $this->request->data ?仅在 GET 请求时检索模型数据。使用博客教程中的这个:
public function edit($id = null) {
$this->Post->id = $id;
if ($this->request->is('get')) {
$this->request->data = $this->Post->read();
} else {
if ($this->Post->save($this->request->data)) {
$this->Session->setFlash('Your post has been updated.');
$this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash('Unable to update your post.');
}
}
}
如果您只是使用 api 来测试单个字段,那么为您的模型编写一个调用该 api 方法的自定义验证器。如果您的 api 正在验证整个模型或多个字段,您可以执行
$this->Model->set($this->data); if($this-Model->validates()) { /* Call Api / if errors /将 $this-Model->validationErrors 设置为与蛋糕验证相同的格式。否则重定向到成功页面。}