6

チェックボックスと「値フィールド」を含むフォームがあります。値フィールドは、テキスト ボックス、複合フィールド、コレクションなど、何でもかまいません。

フォームは次のようになります。たとえば、次のようになります。

field_1_label    enabled    [x]
                 value      [________]

field_2_label    enabled    [x]
                 value      sub_field_1    [________]
                            sub_field_2    [________]

field_3_label    enabled    [x]
                 value      [________]

「有効」フィールドに が含まれているtrue場合、すべてが正常に機能しています。「有効」フィールドに が含まれている場合、値フィールドとその子フィールドの検証falseを無効にしたいと思います。

したがって、「有効」がチェックされていない場合、フィールドは事実上無視されます。引き続きフォームに表示しますが、データを保存することはありません。また、データを検証する必要もありません。

これを行う方法について誰か提案がありますか? 具体的には、検証システムが値フィールド潜在的な子フィールドを無視するのに問題があります。

4

2 に答える 2

2

親のチェックボックスが false に設定されている場合は、検証の前に子フィールドを削除するだけです。

詳細については、クックブックの記事How to Dynamically Modify Forms Using Form Events を参照してください。

フォーム イベント をサブスクライブし、サブスクライバーFormEvents::POST_SET_DATAのフィールドを削除します。

このトピックについては、「イベント サブスクライバーを Fom クラスに追加する」セクションで説明しています。


フォームにさまざまな検証グループを導入することもできます。

親のチェックボックスが false に設定されている場合は、別の検証グループ (子フィールドを含まない) を適用するだけです。

于 2013-06-14T08:49:33.587 に答える