下午好。
我有一个模型,其中包含一个名为"百分比"的字段。所有类似模型的百分比加起来不能超过 100%。在验证期间会对此进行检查。
我需要验证错误消息来说明用户还剩多少百分比"空间"。例如,如果所有 MyModel 的总数已经达到 80%,并且用户尝试创建一个百分比为 40% 的新 MyModel,则错误消息会说:"您的百分比太高。你只剩下20%。
问题是我不知道如何将变量放入验证错误消息中。
在 MyModel 中.php:
public $validate = array(
'percentage' => array(
'rule' => array('confirmValidPercentage', 'percentage'),
'message' => 'foo',
'required' => true,
),
);
public function confirmValidPercentage($data) {
$percentage = floatval($data['percentage']);
$total = 0.00;
$weights = $this->find('all', array('recursive'=>-1));
foreach ($weights as $weight) {
$total += floatval($weight[$this->name]['percentage']);
}
if ($total + $percentage > 100) {
// handle the error variable here
return false;
}
else {
return true;
}
}
我试过:
$this->validate['percentage']['message'] = 'You have '.(100-$total).'% remaining';
但是此处设置的消息元素不会覆盖原始消息 - 错误消息仍然是"foo"。我尝试从$validation数组中完全删除消息元素,但它默认为父名称,即"百分比"。我试过了:
unset($this->validate['percentage']['message']);
在设置验证消息之前,但结果是相同的。
有谁知道如何在验证错误消息中返回变量?多谢。
这实际上很容易。 只需返回错误字符串!
return 'You have ' . ...;