Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Zend framework 如何在Zend Framework中为特定验证器传递字段的转换值?_Zend Framework_Validation - Fatal编程技术网

Zend framework 如何在Zend Framework中为特定验证器传递字段的转换值?

Zend framework 如何在Zend Framework中为特定验证器传递字段的转换值?,zend-framework,validation,Zend Framework,Validation,假设我有一个IP地址字段。它有2个验证器 -知识产权 -Db_非性别歧视者 $ip = new Zend_Form_Element_Text('ip'); $ip->setLabel('IP') ->setRequired(true) ->addValidator('Ip') ->addValidator('Db_NoRecordExists', false, array('table' => 'blacklist_ips', 'field' =&

假设我有一个IP地址字段。它有2个验证器 -知识产权 -Db_非性别歧视者

$ip = new Zend_Form_Element_Text('ip');
$ip->setLabel('IP')
   ->setRequired(true)
   ->addValidator('Ip')
   ->addValidator('Db_NoRecordExists', false, array('table' => 'blacklist_ips', 'field' => 'ip'));
在DB ip中存储为整数,因此我在使用DB_NoRecordsExists对unique进行验证时遇到问题

是否可以将ip转换为整数进行传递,但只传递给其中一个验证器(因为在验证之前转换字段值的情况下,ip验证器将给出错误),类似这样的内容(添加了新参数“value”):


提前感谢。

一种方法是编写自己的验证器
Zend\u Validate\u Db\u NoRecordExists
。例如:

class My_Validate_Db_NoRecordExists extends Zend_Validate_Db_NoRecordExists {
    public function isValid($value)
    {
        return parent::isValid(new Zend_Db_Expr("INET_ATON('$value')"));
    }
}
我还没有测试过,但我觉得应该可以


希望有帮助。

一种方法是编写自己的验证器
Zend\u Validate\u Db\u NoRecordExists
。例如:

class My_Validate_Db_NoRecordExists extends Zend_Validate_Db_NoRecordExists {
    public function isValid($value)
    {
        return parent::isValid(new Zend_Db_Expr("INET_ATON('$value')"));
    }
}
我还没有测试过,但我觉得应该可以


希望有帮助。

谢谢。我做了类似的东西(创建了自己的验证器,在验证之前将ip转换为int),它可以正常工作,但我真的很好奇是否有一种通用的方法可以做到这一点,所以不需要为每个新数据转换创建验证器。@Vovkin。我认为不存在任何通用的方法。对于针对db进行验证,您只有RecordExists和NoRecordExists验证程序。他们并没有任何方法来修改或转换$value的值。谢谢Marcin,但我谈论的不仅仅是针对db的具体验证,而是在发送给验证器之前修改值的可能性。对我来说,有这样一个Zend_Validate的可能性是合乎逻辑的,但我什么也找不到。@Vovkin。这可能不适用于这种情况,但通常可以向表单元素添加过滤器。将对过滤后的值执行验证。谢谢。我做了类似的东西(创建了自己的验证器,在验证之前将ip转换为int),它可以正常工作,但我真的很好奇是否有一种通用的方法可以做到这一点,所以不需要为每个新数据转换创建验证器。@Vovkin。我认为不存在任何通用的方法。对于针对db进行验证,您只有RecordExists和NoRecordExists验证程序。他们并没有任何方法来修改或转换$value的值。谢谢Marcin,但我谈论的不仅仅是针对db的具体验证,而是在发送给验证器之前修改值的可能性。对我来说,有这样一个Zend_Validate的可能性是合乎逻辑的,但我什么也找不到。@Vovkin。这可能不适用于这种情况,但通常可以向表单元素添加过滤器。对过滤后的值执行验证。