你不能。否则你将不得不侵入全球sfValidatorBase
.
如果您以min_length
错误为例,它会像这样抛出(in sfValidatorString
):
throw new sfValidatorError($this, 'min_length', array('value' => $value, 'min_length' => $this->getOption('min_length')));
正如你所看到的,它需要参数value
,min_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
在每个验证器上都得到了扩展,我不知道你如何应用这个修改。至少,您知道在哪里进行更改。