2

在“ProjectConfiguration”中,我可以自定义输出错误,例如

sfValidatorBase::setDefaultMessage('min_length', 'Min% min_length% sign');
sfValidatorBase::setDefaultMessage('required', 'Label required');

但是对于“必填”字段,我不能用动态字段名称代替,如下所示:

sfValidatorBase::setDefaultMessage('required', 'Label %label% required');

我该如何解决?

4

1 回答 1

0

你不能。否则你将不得不侵入全球sfValidatorBase.


如果您以min_length错误为例,它会像这样抛出(in sfValidatorString):

throw new sfValidatorError($this, 'min_length', array('value' => $value, 'min_length' => $this->getOption('min_length')));

正如你所看到的,它需要参数valuemin_length因为消息是这样定义的:

$this->addMessage('min_length', '"%value%" is too short (%min_length% characters min).');

所以它会自动将每个变量替换为%....%.

对于错误,它从(由所有验证器扩展的required那个)抛出:sfValidatorBase

throw new sfValidatorError($this, 'required');

如您所见,没有给出任何第三个参数,因此您不能配置额外的参数。如果你想这样做,你应该改变:

throw new sfValidatorError($this, 'required', array('label' => $this->getOption('label')));

但是这个更改将在 Symfony 存储库中。这sfValidatorBase在每个验证器上都得到了扩展,我不知道你如何应用这个修改。至少,您知道在哪里进行更改。

于 2012-10-12T08:44:30.783 回答