Forms 如何在Zend Framework 2中向下拉列表中的每个选项添加类和差异参数

Forms 如何在Zend Framework 2中向下拉列表中的每个选项添加类和差异参数,forms,zend-framework2,Forms,Zend Framework2,标题很清楚,我想添加类和数据imagesrc以使用自定义下拉列表: 但是这个代码没有任何好处 $this->add(array( 'name' => 'require_course_id', 'type' => 'Zend\Form\Element\Select', 'attributes' => array( ), 'options' =

标题很清楚,我想添加类和数据imagesrc以使用自定义下拉列表:

但是这个代码没有任何好处

        $this->add(array(
        'name'  =>  'require_course_id',
        'type'      =>  'Zend\Form\Element\Select',
        'attributes'    =>  array(

        ),
        'options'       =>  array(
            'label'     =>  'prerequisite',
            'value_options' =>  array(array('label'=>'test','class'=>'test-class','data-imagesrc'=>'myimage')),//$this->getPrerequisite(),
        ),
    ));
如果查看一下,您将能够看到每个
是如何生成的(以及如何合并提供的配置以生成最终的HTML字符串)

将选项标记的“specification”作为一个数组提供,该数组带有
属性
键(就像
选择
元素本身一样)


value\u options用于设置select元素()包含的选项。只需键/值,因为这是ZF2 Select渲染器所期望的


您需要创建自己的辅助对象,以便能够从视图中绘制它。从Zend\Form\View\Helper\FormSelect扩展它,并覆盖renderOptions功能。

“您需要创建自己的助手”-而不是true@AlexP你说得对。我看效果图太快了。。。你的答案很好。别忘了标签上只有几个属性,我不相信“类”是其中之一。看见如果我错了,请纠正我@JaapMoolenaar非常有效的观点;我做了-但是没有特别提到这一点(它确实说“全局属性”是允许的,
class
是其中之一),这在你的文章中是绝对正确的!谢谢顺便说一下,另一件事是
value\u options->options
config是用于optgroup的。
$this->add(array(
    'name'       =>  'require_course_id',
    'type'       =>  'Zend\Form\Element\Select',
    'attributes' =>  array(),
    'options'       => array(
      'label'     => 'prerequisite',
      'value_options' =>  array(

        // For each option you require, provide it's own specification
        array(
          'label' => 'option 1 label',
          'value' => 'opt1value',
          'options' => array(
            // value and label can also be here
          ),
          'attributes' => array(
            // again value and label are ok here too
            'class' => 'test-class',
            'data-foo' => 'bar'
          ),
        ),
        // end option 1 specification

      ),
    ),
));