2012-02-15 10 views
0

「連絡先」というセクションを持つ「顧客」フォームがあります。 ..次の要素が含まれています。この連絡先のセクションでそれぞれの番号が不明な場合にZend SubFormsを処理する方法

<input type="text" name="contacts[0][fname]" /> 
<input type="text" name="contacts[0][sname]" /> 

を開始するには、しかし、ユーザーは、次の生成するためにJavaScriptで要素を複製します別の連絡先を追加することもできます。

<input type="text" name="contacts[0][fname]" /> 
<input type="text" name="contacts[0][sname]" /> 
<br /> 
<input type="text" name="contacts[1][fname]" /> 
<input type="text" name="contacts[1][sname]" /> 

私が知っています最初の要素セットの作成方法は、フォームが提出されてエラーが発生した場合、「連絡先」要素の正しい数がレンダリングされるようにするにはどうすればよいですか?

+0

似たような質問があります:http://stackoverflow.com/questions/6831145/zend-form-dynamic-adding-subforms、それは役に立つかもしれません。 – dinopmi

+0

これは、v2.0まで固定されていないZFのバグです。 http://stackoverflow.com/questions/2849884/howto-address-specific-element-from-subform-and-have-it- – pavsid

答えて

0

私はZend_Formでこれを行う必要はありませんでしたが、私はSymfony 1.4のsfFormでこれを行いました。これは、同様のAPIと操作理論を持っています。サブフォームのいくつかのデフォルト数intialize親フォームのコンストラクタで

  1. :基本的なプロセスであることに基づきます。実際にサブクラスを作成して埋め込むためのロジックを別のメソッドに分けたいとします。病気、彼らは彼らに渡された引数$dataにサブフォームの数を検出し、parent::isValid()またはparent::setDefaults()を呼び出す前にembedContactsを呼び出すように、親フォーム上のisValidsetDefaultsメソッドをオーバーライド

    方法emebedContacts($count = 1)

  2. としてこれを参照してください。

希望します。

+1

と表示されています。こんにちは、ありがとうございました。私は '連絡先'要素の下にそれらをグループ化する方法については混乱しましたが、私がやったことは、空のサブフォームを作成して、それをインデックスとしてサブフォームを含む「連絡先」として割り当てることでした。 fname、snameなどの要素。 – pavsid

+0

申し訳ありませんが、問題が残っています - 上記の作業は正しくフォームを設定しますが、サブフォーム要素を直接レンダリングしようとすると、名前は配列形式では表示されません。 = "contacts [0] [fname]" – pavsid

+0

手動で呼び出したり、オプションを渡したりする必要があるかもしれませんが、私は 'Zend_Form :: setIsArray'のようなものだと思っていますが、 。また、2番目の引数を 'addSubform'に渡してください。これは、後でそれにアクセスする名前/キーであり、要素の' name'属性でエンコードされるものです。 – prodigitalson

関連する問題