要素をフォームに追加した後、1つのチェックボックスの前に送信ボタンが表示されるように、要素を奇妙な順序でレンダリングします。 速いを確認するためのヒントをご存知でしょうか。Zend_Form要素が間違った順序でレンダリングされる
class SomeForm extends My_Form {
public function init() {
$this->addElements();
//add a few elements (#1)
$this->addElements($otherForm->getElements());
//borrow some elements from another form (#2)
if ($trueCondition=true) {
$this->addElements();
//add one more element which will render at end of form (#3)
}
$this->addElements();
//some more, including submit button (#4)
parent::init();
//call My_Form to register custom decorator; culprit?
}
}
出力:
<inputs from addElements() #1 />
<inputs from addElements() #2 />
<inputs from addElements() #4 /> <-
<inputs from addElements() #3 /> <- mixed up order
カスタムデコレータを使用しているすべての他の形態は、それらが追加された順序で要素をレンダリングします。私はかなり乱雑ですので、私はデコレータを投稿していないよ。うまくいけば、エラーは他の場所にあります。
要素は、フォームに追加するときに並べ替える必要があります。おそらく 'setOrder()'をどこかで使っているのでしょうか? – Liyali
Nope。チェックされたフォーム、コントローラ、ビューコード、 'setOrder'には一致しません – bububaba
ZS/Eclipseを使用していますか?私があなただったら私はフォームを実行し(いくつかのブレークポイントで)、デバッグパースペクティブモードで何が起きているか確認します。これは通常、コードがどのように実行されているかを確認するための良い(そして速い)方法です。 – Liyali