ZF2将自定义属性添加到选择表单元素中的选项

问题描述:

我想将自定义HTML属性添加到Zend Framework 2表单中选择的选项。ZF2将自定义属性添加到选择表单元素中的选项

这是我的(部分)的代码从我的Form类:

$this->add(array(
     'name' => 'lieuRemplissage', 
     'type' => 'Select', 
     'attributes' => array(
      'class'  => 'form-control', 
     ), 
     'options' => array(
      'label' => _('Lieu pré-enregistré'), 
     ), 
    )); 

我填充我的选择值在我的控制器是这样的:

$form = new \Vente\Form\Vente; 
foreach($this->getAdminLieuDeVenteTable()->fetchAll() as $lieu) { 
     $optionsLieu[$lieu->getId()] = $lieu->getNom(); 
    } 
    $form->get('lieuRemplissage')->setValueOptions($optionsLieu); 

但是现在,每个选项我想为所有选项添加一个html属性,但每个选项的值不同。

有没有办法做到这一点在ZF2?

谢谢。

+0

是有,你可以在属性键传递中valueOptions – matwr 2014-10-30 16:06:27

我想通了这一点,并希望,因为我看到了这个问题,而我正在寻找同样的问题在这里分享。应该以建议的方式给出相同的结果,但直接使用选项的表单类属性;如果传递数据对象以形成构造来填充像我这样的选项,那么特别有用。

$this->add(array(
    'name' => 'lieuRemplissage', 
    'type' => 'Select', 
    'attributes' => array(
     'class'  => 'form-control', 
    ), 
    'options' => array(
     'label' => _('Lieu pré-enregistré'), 
     'value' => 123 
     'attributes' => array(
      'data-key' => 'value_for_data_attribute_goes_here', 
     ), 
    ), 
)); 

是的,这是可能的ZF2

您传递选项值内的属性。该值应在阵列形式:

//例如在视图:

$select=new \Zend\Form\Element\Select('test'); 
$select->setValueOptions(

    [ 

     ['attributes'=>['data-key'=>'value'],'value'=>'myValue','label'=>'myLabel'] 


    ] 

    ); 

echo $this->formselect($select); 

打印:

<select name="test"><option value="myValue" data-key="value">myLabel</option></select> 

编辑:

的属性时,提供必须是有效的HTML属性你不能放任何随机的键/值对。 例如数据 - *是罚款,有以下几种:

protected $validGlobalAttributes = array(
     'accesskey'   => true, 
     'class'    => true, 
     'contenteditable' => true, 
     'contextmenu'  => true, 
     'dir'    => true, 
     'draggable'   => true, 
     'dropzone'   => true, 
     'hidden'    => true, 
     'id'     => true, 
     'lang'    => true, 
     'onabort'   => true, 
     'onblur'    => true, 
     'oncanplay'   => true, 
     'oncanplaythrough' => true, 
     'onchange'   => true, 
     'onclick'   => true, 
     'oncontextmenu'  => true, 
     'ondblclick'   => true, 
     'ondrag'    => true, 
     'ondragend'   => true, 
     'ondragenter'  => true, 
     'ondragleave'  => true, 
     'ondragover'   => true, 
     'ondragstart'  => true, 
     'ondrop'    => true, 
     'ondurationchange' => true, 
     'onemptied'   => true, 
     'onended'   => true, 
     'onerror'   => true, 
     'onfocus'   => true, 
     'oninput'   => true, 
     'oninvalid'   => true, 
     'onkeydown'   => true, 
     'onkeypress'   => true, 
     'onkeyup'   => true, 
     'onload'    => true, 
     'onloadeddata'  => true, 
     'onloadedmetadata' => true, 
     'onloadstart'  => true, 
     'onmousedown'  => true, 
     'onmousemove'  => true, 
     'onmouseout'   => true, 
     'onmouseover'  => true, 
     'onmouseup'   => true, 
     'onmousewheel'  => true, 
     'onpause'   => true, 
     'onplay'    => true, 
     'onplaying'   => true, 
     'onprogress'   => true, 
     'onratechange'  => true, 
     'onreadystatechange' => true, 
     'onreset'   => true, 
     'onscroll'   => true, 
     'onseeked'   => true, 
     'onseeking'   => true, 
     'onselect'   => true, 
     'onshow'    => true, 
     'onstalled'   => true, 
     'onsubmit'   => true, 
     'onsuspend'   => true, 
     'ontimeupdate'  => true, 
     'onvolumechange'  => true, 
     'onwaiting'   => true, 
     'role'    => true, 
     'aria-labelled-by' => true, 
     'aria-described-by' => true, 
     'spellcheck'   => true, 
     'style'    => true, 
     'tabindex'   => true, 
     'title'    => true, 
     'xml:base'   => true, 
     'xml:lang'   => true, 
     'xml:space'   => true, 
    ); 
+0

键/值岂不是很好,如果这个功能被记录在案!我很想编辑文档并制作公关。 – David 2017-09-21 16:56:28