Cake PHP分隔符不能是带有自定义验证规则的字母数字或反斜杠

时间:2013-04-18 19:13:18

标签: php cakephp validation cakephp-2.0

我有一个问题,我想向你致意。 我在课程帖子中的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视图中的错误消息一直显示,无论函数是真还是假,都无关紧要。

提前致谢。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。 Cake希望自定义验证规则位于调用规则的特定类中。因此,当您在课程帖子中调用自定义规则时,必须在课程帖子中写下自定义函数,否则蛋糕将无法找到它并且每次都将其验证为假。

这里要做的魔术是导入要在调用验证函数的类中使用的appmodel-class。这适用于以下声明:

$ Zipcode = ClassRegistry :: init('要使用的类 - 在我的情况下是“Zipcode”');

但是如果你的表与hasAny或belongsTo和stuff相互关联,那么自定义函数就可以在没有它的情况下工作。您不能错过的另一个重点是,所有验证功能都必须通过“public function xyz”引入,否则蛋糕也不会找到它们。