Я просто столкнулся с проблемой, которая, как я полагаю, является какой-то «ошибкой» фреймворка Symfony: я хочу установить сообщения об ошибках по умолчанию для различных типов валидаторов (например, sfValidatorInteger
). Для этого внутри моего ProjectConfiguration::setup
метода у меня есть:
sfValidatorBase::setDefaultMessage('required', 'Erforderlich.');
sfValidatorBase::setDefaultMessage('invalid', 'Format ungültig.');
sfValidatorInteger::setDefaultMessage('invalid', '"%value%" ist keine Ganzzahl.');
Это отлично работает для sfValidatorBase
, но не для, например, sfValidatorInteger
. sfValidatorInteger
по-прежнему показывает предустановленное сообщение по умолчанию '"%value% is not an integer.'
.
Итак, я взглянул на реализацию sfValidatorInteger::configure
и выяснил, что он устанавливает жестко запрограммированные сообщения об ошибках экземпляра:
protected function configure($options = array(), $messages = array())
{
$this->addMessage('max', '"%value%" must be at most %max%.');
$this->addMessage('min', '"%value%" must be at least %min%.');
$this->addOption('min');
$this->addOption('max');
$this->setMessage('invalid', '"%value%" is not an integer.');
}
Я ожидал, что сообщения об ошибках читаются из карты сообщений по умолчанию, но, очевидно, это не так.
Итак, как я могу решить эту проблему чисто, желательно, не касаясь исходного кода Symfony (поскольку мои изменения могут быть перезаписаны во время будущих обновлений)? Должен ли я получить все классы валидатора, чтобы обеспечить подходящую configure
реализацию? Я так не думаю. Установка сообщений об ошибках для каждого экземпляра валидатора отдельно также не будет (чистой) опцией.
Может, я что-то не так понял в настройке валидаторов. Тогда возникает более общий вопрос: как установить сообщения об ошибках по умолчанию для различных классов валидаторов, таких как 'invalid' => '"%value%" ist keine Ganzzahl.'
для sfValidatorInteger
?
Заранее спасибо,
Флинш.