2011-09-13 20 views
3

私はMatthew O'Phinneyのチュートリアルに従っていますが、どこにもいられません。複合要素が機能していません

http://weierophinney.net/matthew/archives/217-Creating-composite-elements.html

私がやろうとしているすべてのチェックボックスと入力テキストで構成された複合要素を作成することです。

new Zend_Form_Element_Checkbox(); 
new Zend_Form_Element_Text() 

私がコードを出し入れするのは複雑すぎますが、何も問題はありません。私はそれがこれより簡単だと確信していますが、私は間違ったトラックにいるようです。

+0

あなたはあなたの実際の問題は、あなたがが複合要素が必要なのはなぜ – asgeo1

+0

であるかについて具体的にする必要がありますか?なぜあなたはあなたのフォームに別々の要素として両方を持てませんか? Mathewsのアプローチについては、間違いなくデコレータが必要です。それ以外の方法でレンダリングできる方法はないと思います。 Mathewの例では、子要素の各コンポーネントのビューヘルパーを呼び出すデコレータを作成します。その方法で、それらの要素を周囲のマークアップ内に正確に配置することができます。通常、コンポジット要素には、実際の子要素自体の横にレンダリングする必要がある他の「囲む」マークアップがあります。 – asgeo1

+0

ああ、MatthewはZend Frameworkです。もし誰かがZFを知っていれば、それは彼です。 – markus

答えて

3

個人的には、自分自身でコンポジット要素を作成する作業が多かったと思います。私は、一緒に働くために、ajaxを使ってそのユーザーが所有するエンティティにユーザーIDを検証するためのテキストボックスと選択メニューが必要でした。要素、デコレータ、およびバリデータのPHPコードは、約200行のコード、 viewHelperを使用して複合要素をレンダリングするためのビュースクリプト。

私はこのチュートリアルにも従いましたが、非常に役に立ちましたが、必要なものすべてをカバーしていなかったので、たくさんの検索をしなければなりませんでした。私は機能が重要であり、多くの場所で使用されていたので、コンポジット要素を使用することにしましたが、1つのフォーム上にあれば、2つの独立した要素として実装し、要素を関連付ける簡単なフォーム処理コードを記述します。

5

2つの入力要素以上を保持する1つのフォーム要素(Zend_Form_Elementのインスタンス)を作成する方法を示すブログ記事です。

http://akrabat.com/zend-framework/a-zend-framwork-compount-form-element-for-dates/

また、1つの要素よりも多くのグループにサブフォームを使用することができます。
リンク:http://framework.zend.com/manual/en/zend.form.forms.html#zend.form.forms.subforms

$subform = new Zend_Form_SubForm(); 
    $subform->addElement('checkbox', 'status', array(
     'decorators' => array(
      'ViewHelper', 
     ) 
    )); 
    $subform->addElement('text', 'test', array(
     'label'  => 'Text', 
     'decorators' => array(
      'ViewHelper', 
      'Label' 
     ) 
    )); 
    $this->addSubForm($subform, 'subformname'); 
関連する問題