蛋糕PHP验证错误未显示,尽管存在于数组中

时间:2013-04-18 08:36:31

标签: php cakephp validation

在模型中调用验证函数时遇到问题,我尝试从控制器验证。这样工作正常,除了一个值错误的字段没有显示为红色并且没有显示错误消息。

传递给视图的“validationErrors”-array如下所示:

array(
'CITY' => array(
    (int) 0 => 'Bitte eine Stadt angeben'
),
'CART' => array(
    (int) 0 => 'Bitte etwas eingeben'
),
'DATE' => array(
    (int) 0 => 'Bitte das Datum eingeben'
),
'TIME' => array(
    (int) 0 => 'Bitte die Zeit eingeben'
),
'INCOME' => array(
    (int) 0 => 'Bitte das Trinkgeld in Euro angeben'
),
'DELIVERYAREA' => array(
    (int) 0 => 'Postleitzahl existiert nicht!'
)
)

“DELIVERYAREA”是使用以下代码动态构建的:

//form errors formatieren für plz-validierung
            $this->Post->set($this->request->data['Post']);
            $this->Post->validates();
            $errors = $this->Post->validationErrors + $this->Zipcode->validationErrors;

            //in $errors die keys ZIPCODE und DELIVERYAREA anlegen und zipcode löschen
            if ($this->request->data['Post']['B/S'] == 'S' && !isset($errors['ZIPCODE'])) {
                $errors['ZIPCODE'] = $errors['zipcode'];
            };
            if ($this->request->data['Post']['B/S'] == 'B' && !isset($errors['DELIVERYAREA'])) {
                $errors['DELIVERYAREA'] = $errors['zipcode'];
            };
            unset($errors['zipcode']);
            debug($errors);
            $this->set('validationErrors', $errors);

问题是除了DELIVERYAREA之外,所有字段都显示为红色,除了DELIVERYAREA之外我觉得很奇怪...... 感谢您的帮助

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。 我回来在appmodel中验证更加一致。

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

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

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

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