【发布时间】:2013-04-18 19:13:18
【问题描述】:
我有一个问题想解决。 我已经在课堂帖子的 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。
提前致谢。
【问题讨论】:
-
前两条校验规则可以替换为
postal校验,也支持德国邮政编码校验; book.cakephp.org/2.0/en/models/… 但是,我怀疑错误消息可能是由另一个验证规则引起的,CakePhp 将其解释为正则表达式。您是否尝试禁用所有其他验证规则以缩小问题范围? -
禁用所有其他功能没有任何改变。在构建您提到的邮政功能后,我收到错误消息,即 Cake 无法再次找到 zipexists 的验证处理程序:'DELIVERYAREA' => array('rule-1' => array('rule' => array(' postal', null, 'de'), 'message' => 'Bitte eine gültige Postleitzahl eingeben.', 'last' => true ), 'rule-2' => array('rule' => array('ZipExists '), 'message' => 'Postleitzahl existiert nicht!' ) )
-
经过大量阅读和调试后,我强烈认为 Cake 想要在 post-class 中使用自定义函数“ZipExists”——即调用它的类。但是我需要调用该函数,而它存在于类 Zipcode 中。但是到目前为止,这本书和网络都没有提供关于这个主题的内容。也许我只是在查找信息时运气不好?!
标签: php cakephp validation cakephp-2.0