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?
谢谢。
答
我想通了这一点,并希望,因为我看到了这个问题,而我正在寻找同样的问题在这里分享。应该以建议的方式给出相同的结果,但直接使用选项的表单类属性;如果传递数据对象以形成构造来填充像我这样的选项,那么特别有用。
$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
是有,你可以在属性键传递中valueOptions – matwr 2014-10-30 16:06:27