Zend framework2 Zend框架2过滤器
当我使用Zend framework2 Zend框架2过滤器,zend-framework2,zend-form,Zend Framework2,Zend Form,当我使用InputFilter时,在int filters $inputFilter->add($factory->createInput(array( 'name' => 'id', 'required' => true, 'filters' => array( array('name' => 'Int'), ), ))); 您需要使用allowEmpty属性来强制InputFilter组件拒绝空值
InputFilter
时,在int filters
$inputFilter->add($factory->createInput(array(
'name' => 'id',
'required' => true,
'filters' => array(
array('name' => 'Int'),
),
)));
您需要使用
allowEmpty
属性来强制InputFilter组件拒绝空值
$inputFilter->add($factory->createInput(array(
'name' => 'id',
'required' => true,
'allowEmpty' => false, // <--- Look ma
'filters' => array(
array('name' => 'Int'),
),
)));
$inputFilter->add($factory->createInput(数组)(
'name'=>'id',
“必需”=>true,
'allowEmpty'=>false,//数组(
数组('name'=>'Int'),
),
)));
您确定要使用Int
输入过滤器吗?它的功能是。其代码只是:
public function filter($value)
{
return (int) ((string) $value);
}
它将值转换为字符串。如果您的值是空字符串,它会将其转换为0,这就是为什么之后在验证程序的执行过程中,required不起作用(它检查0)
在我看来,由于输入的名称id
,您只想强制用户输入必须是数字的内容。您可以这样做:
$inputFilter->add( $factory->createInput( array(
'name' => 'id',
'required' => true,
'validators' => array(
array( 'name' => 'Digits' ),
)
) );
你能在问题中加入InputFilter的用法吗?我使用它=>使用Zend\InputFilter\Factory作为InputFactory;使用Zend\InputFilter\InputFilter;使用Zend\InputFilter\InputFilterAwareInterface;使用Zend\InputFilter\InputFilterInterface;使用Zend\Validator\NotEmpty;使用Zend\Validator\StringLength;使用Zend\Validator\EmailAddress;使用Zend\Validator\Between;我将数字与模式属性'attributes'=>array('type'=>'text','pattern'=>'[1-9]*','id'=>'prix',)一起使用,这些属性没有任何效果。允许的选项是。
Digits
验证器最终调用了Digits
过滤器,该过滤器使用三种固定模式(您的模式永远不会被使用)。它们都接受输入的0值(由Int
过滤器从空字符串生成)。