ZF2 - 控制/自定义单个收音机/复选框

时间:2013-07-19 14:55:22

标签: php zend-framework2

我正在尝试在ZF2中的单选按钮上添加data-值。是否可以控制用value_options指定的每个输入?

添加到表单的典型单选按钮:

$this->add(array(
    'type'  => 'radio',
    'name'  => 'duration',
    'options' => array(
        'value_options' => array(
            'daily' => 'Daily',
            'weekly' => 'Weekly',
            'monthly' => 'Monthly',
        ),
    ),
));  

最终,我想要以下内容,因此我可以为每个广播项目指定单独的参数/选项:

$this->add(array(
    'type'  => 'radio',
    'name'  => 'duration',
    'options' => array(
        'value_options' => array(
            array(
                'attributes' => array(
                    'value' => 'daily',
                    'data-item' => 'apple'
                ),
                'options' => array(
                    'label' => 'Daily'
                )
            ),
            array(
                'attributes' => array(
                    'value' => 'weekly',
                    'data-item' => 'orange'
                ),
                'options' => array(
                    'label' => 'Weekly'
                )
            ),
            array(
                'attributes' => array(
                    'value' => 'monthly',
                    'data-item' => 'pear'
                ),
                'options' => array(
                    'label' => 'Monthly'
                )
            ),
        ),
    ),
));

我想要上述的原因是,我想在选择单选按钮时使用JavaScript来改变某些内容,因此它需要保存数据属性。

这样的事情可能吗?

1 个答案:

答案 0 :(得分:7)

可以通过提供一个数组(或实现ArrayAccess的对象)而不是单个值来完成(几乎与您在示例中所写的一样)。

$this->add(array(
    'type'  => 'radio',
    'name'  => 'duration',
    'options' => array(
        'value_options' => array(
            'daily' => array(
                'label' => 'Daily',
                'value' => 'daily',
                'attributes' => array(
                    'data-item' => 'apple',
                ),
            ),
            'weekly' => array(
                'label' => 'Weekly',
                'value' => 'weekly',
                'attributes' => array(
                    'data-item' => 'orange',
                ),
            ),
            'monthly' => array(
                'label' => 'Monthly',
                'value' => 'monthly',
                'attributes' => array(
                    'data-item' => 'pear',
                ),
            ),
        ),
    ),
));

https://github.com/zendframework/zf2/blob/master/library/Zend/Form/View/Helper/FormMultiCheckbox.php#L177

这应该适用于无线电,多个复选框和也选择了。