我创建了一个自定义验证器:
class MyValidator extends AbstractValidator
{
const ERROR_CONST = 'error';
protected $dbAdapter;
protected $messageTemplates = array(
self::ERROR_CONST => "Error msg for '%value%'."
);
public function __construct($dbAdapter)
{
$this->dbAdapter = $dbAdapter;
}
public function isValid($value, $context = null)
{
$this->setValue($value);
/**
* Do validation against db
*/
if(/* Not valid */){
$this->error(self::ERROR_CONST);
return false;
}
return true;
}
}
验证工作,我已经能够测试它。什么不起作用是错误消息的输出使用
echo $this->formElementErrors($form->get('action'));
输出的只是一个空的 UL。这是翻译的问题吗?当我在验证器中对 $this->getTranslator() 执行 get_class 时,我得到了验证器类名。当我 var_dump $this->getTranslator() 它输出空值。我是否需要为此设置翻译器才能工作?在哪里设置翻译器的最佳位置,以便我自己的验证器在系统范围内使用它?