【发布时间】:2011-01-31 10:37:02
【问题描述】:
我刚刚遇到一个问题,我认为这是 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?
提前致谢,
弗林施。
【问题讨论】:
标签: symfony1 symfony-1.4 symfony-forms