在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回调。
感谢提示!