2012-04-03 10 views
0

現在、私はZend_Formを拡張するのが非常に難しいです。Zend_Formを拡張するのが難しい

Forms_LpaManageEmailFormという基本クラスがあります。 これは別途使用され、正常に動作します。 次に、新しいクラスフォーム を作成しました。Default_Form_CartReport witch extend Forms_LpaManageEmailForm したがって、をDefault_Form_CartReportにレンダリングして、それを明示的に変更します。 つまり、 Forms_LpaManageEmailFormクラスのすべての機能が必要ですが、オーバーライドされた_addMultiOptionsForMultiSelect()機能 (完了)と変更されたボタンラベル(解決されません)。その中華鍋の罰金 -

基本クラスでは、私は別に基本的なフォームを使用する場合 $this->_entry_id['entry_id'].で満たされている値IDという名前の要素を非表示になっています。しかし、 拡張フォーム(Forms_LpaManageEmailForm)を実行すると、隠されたid要素の値が空であることがわかります。構成セクションの基本クラスでは、 Zendデバッガー(この行はZend_Debug::dump($this->_entry_id['entry_id']))を実行して、 の値が渡されたかどうかを確認します。そして、それが渡されました:) init()セクションでこれを繰り返すと、NULLが表示されます...

私がほとんど理解していないように、問題はinit()関数で呼び出されます。 Default_Form_CartReportクラスのスケルトンで何か問題があると思います。

私はコードをPASTEBIN にアップロードしました。この質問には本当に助けが必要です。

ありがとうございました!

答えて

1

Forms_LpaManageEmailForm:: __constructが直接$this->init()を呼び出していることが原因で問題が発生していると思います。 Zend_Formを開くと、__construct$this->init()関数を呼び出していることがわかります。これにより、init()関数が2回実行されます。

すべてのロジック&要素を__construct関数にロードし、init()関数を使用しないでください。また、各フォームクラスの__construct関数は、追加ロジックの前に常にparent::__constructを呼び出す必要があります。

+0

** aporat **、ありがとうございます!私は自分のコードを更新しました。ここはここにあります:[LINK](http://pastebin.com/DPJxv7U5)。 Zend_Debug :: dump($ this-> getElements())を実行すると、そのid要素に '[" _value ":protected] => int(51)'の値が書き込まれます。しかし、まだHTMLで出力されていません...ラベルを変更することができます:私たちは最終的な解決策のために正しい方法を考えています – Kuzma

+0

さらに、私は 'Zend_Debug :: dump($ this-> getElements ()) ' – Kuzma

+0

彼らの方法では、親クラスからid要素を削除すると、子フォームはまったくレンダリングされません。しかし、私はフォームダンプを見ることができます...非常に奇妙な行動 – Kuzma

関連する問題