ZF2フォームとDoctrineModuleハイドレーターを使用して、単純なCRUDシステムでエンティティを作成/更新するZF2アプリケーションに取り組んでいます。Zend\Form\Element\Collection
エンティティ (Union) は別のエンティティ (Team) との Doctrine OneToMany 関連付けを持っており、その関連付けはフォーム サイトの で表されます。新しいエンティティを作成するとき、またはフォームを使用して既存のエンティティを更新するときに、既存のエンティティの関連付けコレクションを空にするという 1 つのケースを除いて、すべてが問題なく動作します。コレクションのすべての要素を削除して [保存] をクリックすると、フォームが跳ね返され、コレクションの既存の各要素にエラーが表示されますValue is required and can't be empty
。
問題を示すビデオ: http://youtu.be/3ucRb6X61c8
コード:
- コントローラー: Class、View Scripts
- サービス:クラス、工場
- フォーム:工場
- フィールドセット:
- エンティティ:
問題は InputFilter に要約されるようですが、何が問題なのかを正確に突き止めることはできません。コレクションの N 個のエントリのうち (N-1) 個まで削除すると問題なく動作するため、InputFilter 構造自体には問題はありません。おそらく、POST されたコレクションが空の場合、コレクションZend\Form
の各要素に割り当てられた既存の NotEmpty バリデーターを削除しないのteams
でしょうか?
Union フィールドセットにはカスタム入力フィルターが用意されていますが (こちらを参照teams
)、コレクション要素には入力がリストされていません。また、カスタム InputFilter を完全に削除することと、teams
コレクションに適切な InputFilter 定義を追加することの両方を試みましたが、最終結果は同じです。
私がここで間違っていることについて何か洞察を持っている人はいますか?