Zend表单元素选择 - 如何返回整数?

时间:2017-08-09 16:18:58

标签: php forms zend-framework2

有没有办法配置Zend \ Form \ Element \ Select来返回整数? 如果我有一个带有这样的选择元素的表单(这是根据文档和我的网络研究配置选择元素的常用方法):

$this->add(array(
        'name' => 'category_id',
        'type' => 'Zend\Form\Element\Select',
        'options' => array(
            'label' => 'Category',
            'value_options' => array(
                '1' => 'Gold',
                '2' => 'Silver',
                '3' => 'Diamond',
                '4' => 'Charm'    
        ),
        'attributes' => array(
            'class' => 'form-control',
        ),
    ));       

我想如果我改变这样的值选项:

$this->add(array(
        'name' => 'category_id',
        'type' => 'Zend\Form\Element\Select',
        'options' => array(
            'label' => 'Category',
            'value_options' => array(
                1 => 'Gold',
                2 => 'Silver',
                3 => 'Diamond',
                4 => 'Charm'     
        ),
        'attributes' => array(
            'class' => 'form-control',
        ),
    ));  

将返回整数,但我错了。在这两种情况下都返回字符串。我的php代码将此表单值写入db表,其中category_id定义为int。

1 个答案:

答案 0 :(得分:1)

在ZF2中使用Zend\Filter\IntZend\Filter\ToInt,具体取决于您使用的ZF2版本,Zend \ Filter \ Int在ZF2.4中已弃用。

在表单中,假设您使用的是Zend \ InputFilter \ InputFilterProviderInterface:

public function getInputFilterSpecification()
{
    return array(
        'category_id' => array(
            'required' => TRUE,
            'filters' => array(
                array('name' => 'Int'),
            ),
            'validators' => array(
                // Your validators here
            ),
        ),
    );
}