Zend framework2 Zend Framework 2:尝试向窗体添加selectbox不会呈现值
我试图在我的一个表单中添加一个选择框,这个表单的输入类型=文本元素工作得很好,但我得到的只是一个空的选择框,里面没有标签。这就是我使用的代码: Bla.php::Bla->getInputFilterZend framework2 Zend Framework 2:尝试向窗体添加selectbox不会呈现值,zend-framework2,html-select,Zend Framework2,Html Select,我试图在我的一个表单中添加一个选择框,这个表单的输入类型=文本元素工作得很好,但我得到的只是一个空的选择框,里面没有标签。这就是我使用的代码: Bla.php::Bla->getInputFilter $inputFilter->add($factory->createInput(array( 'type' => 'Zend\InputFilter\Select', 'name' => 'payment_type', 'required' => t
$inputFilter->add($factory->createInput(array(
'type' => 'Zend\InputFilter\Select',
'name' => 'payment_type',
'required' => true,
'filters' => array(
array('name' => 'Int'),
),
)));
BlaForm.php::BlaForm->_构造:
$this->add(array(
'type' => 'Zend\Form\Element\Select',
'name' => 'payment_type',
'options' => array(
'label' => 'Payment',
'value_options' => array(
0 => 'Nur Überweisung',
1 => 'Nur Paypal',
2 => 'Nur Barzahlung im Voraus',
),
),
'attributes' => array(
'value' => 0 //set selected to "Nur Überweisung"
)
));
php视图
<div class="control-group">
<?php
echo $this->formLabel($form->get('payment_type')->setLabelAttributes(array(
'class' => 'control-label'
)));
?>
<div class="controls">
<?=$this->formElement($form->get('payment_type'));?>
<span class="help-inline"><?=$this->formElementErrors($form->get('payment_type'));?></span>
</div>
</div>
我已经尝试使用选项而不是值选项,昨天我了解到它只是值选项的别名。此外,我在视图中尝试了formSelect而不是formElement,但这也没有改变任何事情。为了测试,我甚至从字符串中删除了UMLAUT
有没有人遇到过同样的问题,或者知道我现在做错了什么?我自己找到了解决办法。在BlaForm.php中,selectbox元素的格式必须如下所示:
$this->add(array(
'type' => 'Zend\Form\Element\Select',
'name' => 'payment_type',
'options' => array(
'label' => 'Bezahlung',
),
'attributes' => array(
'options' => array(
0 => 'Nurerweisung',
1 => 'NurPaypal',
2 => 'NurBarzahlung im Voraus',
3 => 'NurBarzahlung am Bus',
),
'value' => 2 //set selected to "public"
)
));
选项和值需要嵌套在unter属性中。。。是啊,为什么不呢?我通过更深入地查看inter Zend\Form\Element\Select方法GetOptionatAttributeValues的位置发现了这一点,这给了我一个提示。我刚刚在本地针对当前的master rev 9747bd01d尝试了您的示例,它们毫无问题地工作了——在表单上使用formCollection,或者在单个元素上使用formElement或formSelect。在每种情况下,我都会得到以下标记:
<select name="payment_type"><option value="0" selected="selected">Nur Überweisung</option>
<option value="1">Nur Paypal</option>
<option value="2">Nur Barzahlung im Voraus</option></select>
您使用的是什么版本的ZF2?您能针对2.0.2或当前主版本进行测试吗?我进一步发现,必须是选项,而不是值选项。使用值选项的代码是正确的。我以问题中提供的示例为例,它在当前主版本9747bd01d下正常工作。选项不应该再在属性中指定。好的,我已经将我的应用程序更新为2.0.2,我的问题中的代码一切都很好。感谢您澄清价值选项的事实。虽然这不是正确的答案,但它帮助我找到了问题的解决方案。我不知道不同版本之间的情况会发生变化,并且在它们之间有不同的方式来指定value_选项。我在看一个旧的教程EvdentlyWith2.0.2,上面的代码运行得很好。谢谢你的关注,让我意识到这一点。