-2

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

传递给视图的“validationErrors”数组如下所示:

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 之外,所有字段都显示为红色,并带有特定的消息 - 我觉得很奇怪......提前感谢您的帮助

4

1 回答 1

0

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

Cake 希望自定义验证规则位于调用该规则的特定类中。因此,当您在课堂帖子中调用自定义规则时,必须将自定义函数写在课堂帖子中,否则 cake 不会找到它并每次都将其验证为 false。

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

$Zipcode = ClassRegistry::init('Class to use - 在我的例子中是 "Zipcode"');

但是,如果您的表通过 hasAny 或 belongsTo 等相互关联,则自定义函数在没有这些的情况下也可以工作。您不能错过的另一个重要点是,所有验证功能都必须使用“公共功能 xyz”引入,否则蛋糕也找不到它们。

于 2013-04-20T08:17:14.450 回答