2

何らかの理由でZend_Form_Element_SelectをsetIsArrayと組み合わせて使用​​する場合、ZendFramework1.12は複数選択が必要であると想定します。これはフレームワークの奇妙な動作のように思われるので、回避策または私が設定していない別のオプションが必要だと思います。

たとえば、次のコードを使用する場合:

$element = $this->getElement('element');
$element->setIsArray(true)
        ->setMultiOptions(array('a' => 'A'));

次の出力が得られます。

<select name="element[]" id="element" multiple="multiple">
<option value="a" label="A">A</option>
</select>

目的の出力が必要な場合:

<select name="element[]" id="element">
<option value="a" label="A">A</option>
</select>

つまり、multiple="multiple"は必要ありません

この問題の回避策を検討しましたが、フォーム要素の名前に角かっこを追加するなどの単純な問題には適切ではないと思います。この時点で、jqueryを使用して、ページの読み込み時にこの複数の属性を削除することを考えていますが、これは本当にハッキーであり、ZendFrameworkがこのように機能することは想像できません。

上記のコード例を使用してこれを行う方法を知っている人はいますか?zend form selectまたはaddElementの新しいインスタンスはすでに確立されているため、インスタンス化したくありません。

4

2 に答える 2

2

ZF Issue Trackerにも非常によく似たスレッドがありますが、提案された回避策を試しましたか?

$element = new Zend_Form_Element_Select('selectbox', array('multiple' => false ));
$element->setIsArray(true);
于 2012-12-27T01:32:25.243 に答える
2

したがって、これはこの問題の解決策であり、以下の例に示すように、複数の=>falseでsetOptionsメソッドを使用します。

$element = $this->getElement('element');
$element->setMultiOptions(array('a' => 'A'))
        ->setIsArray(true)
        ->setOptions(array('multiple' => false));
于 2012-12-27T23:45:56.580 に答える