Пользовательская проверка CakePHP с переменной в сообщении об ошибке
Добрый день.
У меня есть модель, которая имеет поле под названием «процент». У всех аналогичных моделей их процентное соотношение не может превышать 100%. Проверка для этого обрабатывается во время проверки.
Мне нужно сообщение об ошибке проверки, чтобы сказать, сколько процентов "номер" quot; пользователь ушел. Например, если у всех MyModel уже есть 80%, и пользователь пытается создать новую MyModel с процентом 40%, сообщение об ошибке скажет: «Ваш процент слишком высок. У вас осталось только 20%. & Quot;
Проблема в том, что я не знаю, как поместить переменную в сообщение об ошибке валидации.
В 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']);
перед установкой сообщения проверки, но результат тот же.
Кто-нибудь знает, как вернуть переменную в сообщении об ошибке проверки? Большое спасибо.