我有个问题想和你谈谈。我已经在类post的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)抛出正确的数字:如果函数找到有效的邮政编码,则抛出1;如果没有找到,则抛出0。也就是说,该函数被正确调用。但是Cake做的是两件事。首先,它抛出一个错误:分隔符不能是字母数字或反斜杠。由于尝试了array_push($zipcode);在函数没有工作的情况下,我对此一无所知。
第二,Deliveryarea视图中的错误消息一直显示,与函数抛出的true或false无关。
提前谢谢。
发布于 2013-04-20 16:13:00
我找到了解决方案。Cake希望自定义验证规则位于调用规则的特定类中。所以,当你在post类中调用自定义规则时,自定义函数必须写在post类中,否则蛋糕不会找到它并每次都验证它为false。
这里要做的魔术是导入您想要在调用验证函数的类中使用的appmodel-class。这与以下语句一起使用:
$Zipcode =ClassRegistry::init(‘要使用的类-在我的例子中是"Zipcode"');
但是,如果您的表与hasAny或belongsTo等关联,则自定义函数将在没有它们的情况下工作。另一个你不能错过的要点是,所有的验证函数都必须用"public function xyz“来引入,否则蛋糕也找不到它们。
https://stackoverflow.com/questions/16091261
复制相似问题