我刚刚遇到一个问题,我认为这是 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.'
for sfValidatorInteger
?
在此先感谢,
弗林施。