Cakephp 如果使用API验证数据,如何持久化表单?

Cakephp 如果使用API验证数据,如何持久化表单?,cakephp,cakephp-2.1,Cakephp,Cakephp 2.1,通常,如果我使用CakePHP的魔术和验证表单,那么它将“持久化表单”,这意味着用户不必重新输入所有内容。此外,默认情况下,CakePHP会标记所有未通过验证的字段。我的问题是,既然我正在将所有表单数据发送到一个API,我怎么还能使用CakePHP的全部魔力呢 我研究了定制的验证方法,但问题是我必须一次将所有数据发送到API,然后我将立即返回所有错误(账单信息) 那么你做错了。 默认的“蛋糕”方式是保存表单,即使(特别是)在验证失败之后 但是,如果没有看到实际的代码,就无法告诉您更多。 查看烘焙

通常,如果我使用CakePHP的魔术和验证表单,那么它将“持久化表单”,这意味着用户不必重新输入所有内容。此外,默认情况下,CakePHP会标记所有未通过验证的字段。我的问题是,既然我正在将所有表单数据发送到一个API,我怎么还能使用CakePHP的全部魔力呢


我研究了定制的验证方法,但问题是我必须一次将所有数据发送到API,然后我将立即返回所有错误(账单信息)

那么你做错了。 默认的“蛋糕”方式是保存表单,即使(特别是)在验证失败之后

但是,如果没有看到实际的代码,就无法告诉您更多。 查看烘焙模板以及如何正确完成烘焙。
然后您的问题会立即自行解决。

也许您在错误验证后设置了$this->request->数据库中的数据?仅在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); 如果($this Model->validates()){ /*调用Api/ 如果错误 /将$this Model->validationErrors设置为与蛋糕验证相同的格式。 否则重定向到成功页面。
}

谢谢。事实上,验证是将数据发送到API并查看是否失败。如果我使用API进行错误检查,有没有办法“持久化”表单?你说的是某种API?这是什么,你能再解释一下吗?如果蛋糕核心和外部应用程序之间有某种定制,那么中间层处理验证响应的方式可能与您预期的不同。我只是将账单信息发送到支付网关,然后得到响应。我只是想知道如何在仍然利用CakePHP的所有魔力的情况下做到这一点。