我刚刚发现了一个问题,我认为它是某种symfony框架的'bug':我想为不同类型的验证器设置默认错误消息(例如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
实现吗?好吧,我不这么认为。分别为每个验证器实例设置错误消息也是no(clean)选项。
也许我对这些验证器的配置有些不对劲。然后,一个更一般的问题是:如何为'invalid' => '"%value%" ist keine Ganzzahl.'
的{{1}}等不同的验证器类设置默认错误消息?
提前致谢,
Flinsch。
答案 0 :(得分:1)
我认为您可以使用xliff翻译文件来完成此操作。
<source>"%value%" is not an integer.</source>
<target>"%value%" n'est pas un entier.</target>
答案 1 :(得分:1)
我会创建自己的验证器来扩展默认的Symfony并使用它们。