CakePHP中模型中的动态验证

时间:2014-07-23 19:08:25

标签: cakephp cakephp-model

在CREATE操作中使用模型验证和" isUnique"规则,我检查数据库中是否已存在特定值。

我的申请是一本字典。在某些情况下,有必要跳过该验证并允许应用程序为同一个单词创建多个条目。因此,我需要一种方法来操作验证,如下所示:

验证会像往常一样返回错误消息。此外,应该会显示一个带有标签的复选框,上面写着"我确认我想为这个单词创建另一个条目"如果我选中复选框并再次提交表单,则验证应返回true并且将存储该单词。如果未选中该复选框,则验证将继续返回false。

我想到了这样的东西(它只是伪代码来说明我的意思。我知道这不是PHP代码)

function afterValidate() {
  if ($this->validationErrors contains the observed field) {
    if ($this->data does NOT contain the extra checkbox) {
      extend $this->data with an extra checkbox;
    }
    else {
      if (extra checkbox is checked) {
        force validation to return true;
        save record;
      }
    }
  }
}

不幸的是,我无法在我的模型中使用它!

我的第一个障碍是第二个IF构造:如何在模型中扩展数据对象? 当我使用pr()命令进行调试时,我可以将其中的东西(我想要的复选框)推送到它(甚至可以看到它)。但是Controller和View都没有看到它:当我在Controller或View中输出数据对象时,它仍然包含标准表单字段而不是复选框......?

我认为我可以将代码移动到Controller并让它在那里工作,但我认为它必须在模型中发生,因为后处理数据有afterValidate回调。

感谢提示!

0 个答案:

没有答案