【发布时间】:2013-11-19 11:59:37
【问题描述】:
我有这个id_role 输入,它根据另一个输入internet_access 的值进行验证。
id_role 的验证器链有一个回调验证器,它必须检查空/空值,该链中的其他验证器必须只检查填充值。
我已经通过$id_role->setContinueIfEmpty(true) 对空/null 值进行了检查,但这适用于链中的每个验证器。我需要它只应用于链的回调验证器。
这是实际的id_role 输入:
$id_role = new Input('id_role');
$id_role->setContinueIfEmpty(true); //this allows to check against empty/null values
$id_role->getFilterChain()
->attach($FilterInt);
$id_role->getValidatorChain()
->attach(new Validator\Callback(function($value, $context=array()){
return isset($context['internet_access']) && $context['internet_access'] == 1 && $value === 0 ? false : true;
}))
->attach(new Validator\Db\RecordExists(...);
所以我的问题是回调验证器工作正常,但它在DbRecordExists 上失败,因为它试图找到一个空的记录。 DbRecordExists 必须仅在 id_role 实际被填充时才尝试查找记录。
有没有办法以优雅的方式(在输入过滤器和/或输入中)做我想做的事?
【问题讨论】:
标签: php validation zend-framework2