Zend框架2过滤器

时间:2014-08-01 22:46:47

标签: zend-framework2 zend-form

当我使用InputFilter时,int filters

中未考虑所需
$inputFilter->add($factory->createInput(array(
    'name'     => 'id',
    'required' => true,
    'filters'  => array(
        array('name' => 'Int'),
    ),
)));

2 个答案:

答案 0 :(得分:0)

您需要使用allowEmpty属性来强制InputFilter组件拒绝空值。

$inputFilter->add($factory->createInput(array(
    'name'     => 'id',
    'required' => true,
    'allowEmpty' => false, // <--- Look ma
    'filters'  => array(
        array('name' => 'Int'),
    ),
)));

答案 1 :(得分:0)

您确定要使用Int InputFilter 吗?它的功能是convert a scalar value to an Integer。它的代码只是:

public function filter($value)
{
    return (int) ((string) $value);
}

将值转换为字符串。如果您的值是一个空字符串,它会将其转换为0,之后,在验证程序的执行过程中,所需的不起作用(它检查为0)。

在我看来,由于您输入的名称id,您只想强制用户输入必须是数字的内容。你可以这样做:

    $inputFilter->add( $factory->createInput( array(
        'name'      => 'id',
        'required'  => true,
        'validators' => array(
            array( 'name' => 'Digits' ),
        )
    ) );