我有一个问题,我想向你致意。 我在课程帖子中的appmodel中设置了自定义验证规则。
'DELIVERYAREA' => array(
'rule-1' => array(
'rule' => array('between', 5, 5),
'message' => 'Bitte eine fünfstellige Postleitzahl eingeben'
),
'rule-2' => array(
'rule' => 'numeric',
'message' => 'Bitte nur Zahlen eingeben'
),
'rule-3' => array(
'rule' => 'ZipExists',
'message' => 'Postleitzahl existiert nicht!'
)
)
ZipExists函数也在appmodel中编码,但在类zipcode中编码。
public function ZipExists($zipcode){
$valid = $this->find('count', array('conditions'=> array('Zipcode.zipcode' =>$zipcode)));
if ($valid >= 1){
return true;
}
else{
return false;
}
}
debug($ valid)抛出正确的数字:如果函数找到有效的zipcode则为1,否则为0。这就是说函数被正确调用。 但是Cake所做的是两件事。 首先它会抛出一个错误:分隔符不能是字母数字或反斜杠。自从尝试使用array_push($ zipcode);在功能方面没有用,我对此没有任何线索。
其次,Deliveryarea视图中的错误消息一直显示,无论函数是真还是假,都无关紧要。
提前致谢。
答案 0 :(得分:0)
我找到了解决方案。 Cake希望自定义验证规则位于调用规则的特定类中。因此,当您在课程帖子中调用自定义规则时,必须在课程帖子中写下自定义函数,否则蛋糕将无法找到它并且每次都将其验证为假。
这里要做的魔术是导入要在调用验证函数的类中使用的appmodel-class。这适用于以下声明:
$ Zipcode = ClassRegistry :: init('要使用的类 - 在我的情况下是“Zipcode”');
但是如果你的表与hasAny或belongsTo和stuff相互关联,那么自定义函数就可以在没有它的情况下工作。您不能错过的另一个重点是,所有验证功能都必须通过“public function xyz”引入,否则蛋糕也不会找到它们。