Zend framework2 Zend Framework 2:尝试向窗体添加selectbox不会呈现值

Zend 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

我试图在我的一个表单中添加一个选择框,这个表单的输入类型=文本元素工作得很好,但我得到的只是一个空的选择框,里面没有标签。这就是我使用的代码:

Bla.php::Bla->getInputFilter

$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,上面的代码运行得很好。谢谢你的关注,让我意识到这一点。