5

フォームの1つに選択ボックスを追加しようとしています(input type = "text"要素を使用するだけでかなりうまく機能します)が、取得するのは、タグが含まれていない空の選択ボックスだけです。だからこれは私が使用するコードです:

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-> __ Construct():

$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"
    )
));

bla.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>

「value_options」の代わりに「options」を使用してみましたが、昨日は「value_options」のエイリアスにすぎないことを知りました。また、ビューでformElement()の代わりにformSelect()を試しましたが、それでも何も変わりません。テスト目的で文字列からumlautsを削除しました...

誰かが同じ問題を経験したか、何か考えを持っていましたか、私が現在間違っていることは何ですか?

4

2 に答える 2

5

現在のマスター (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 または現在のマスターに対してテストできますか?

于 2012-10-15T14:03:01.013 に答える
0

私は自分で解決策を見つけました。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"
    )
));

「オプション」と「値」は「属性」の下にネストする必要があります...ええ、そうではありませんか? メソッド「getOptionAttributeValues()」が存在する場所を Zend\Form\Element\Select 内でさらに詳しく調べると、ヒントが得られました。

于 2012-10-13T14:02:50.147 に答える