在模型中调用验证函数时遇到问题,我尝试从控制器验证。这样工作正常,除了一个值错误的字段没有显示为红色并且没有显示错误消息。
传递给视图的“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之外我觉得很奇怪...... 感谢您的帮助
答案 0 :(得分:0)
我找到了解决方案。 我回来在appmodel中验证更加一致。
Cake希望自定义验证规则位于调用规则的特定类中。因此,当您在课程帖子中调用自定义规则时,必须在课程帖子中写下自定义函数,否则蛋糕将无法找到它并且每次都将其验证为假。
这里要做的魔术是导入要在调用验证函数的类中使用的appmodel-class。这适用于以下声明:
$ Zipcode = ClassRegistry :: init('要使用的类 - 在我的情况下是“Zipcode”');
但是如果你的表与hasAny或belongsTo和stuff相互关联,那么自定义函数就可以在没有它的情况下工作。您不能错过的另一个重点是,所有验证功能都必须通过“public function xyz”引入,否则蛋糕也不会找到它们。