1

Symfony2 プロジェクトで FOSUserBundle を使用しています。登録フォームで必要なため、User エンティティに「誕生日」フィールドを追加しました。また、登録フォームに適切なフィールド (type=birthday) を追加しました。ユーザーの年齢が 18 歳以上かどうかを確認する必要があります。このチュートリアルに従って、独自の制約を用意しました。すべてが完全に機能しますが、エラー メッセージはフィールドではなくフォームに添付されており、フィールドの横にエラー メッセージが表示されます。代わりに、フォーム全体の上にそれを取得します。フォームの他のすべてのエラーは、適切なフィールドの横に表示されます。制約をフォームではなくフィールドに強制的に適用する方法を知っている人はいますか?

編集:

この特定のフィールドをレンダリングする Twig コード フラグメント:

<div class="grid_8" style="margin-bottom:20px;">
      <div class="grid_2 alpha">{{ form_label(form.date_of_birth)}}</div>
      <div class="grid_4">{{ form_widget(form.date_of_birth)}}</div>
      <div class="grid_2 omega">{{ form_errors(form.date_of_birth)}}</div>
</div> 

フォームの冒頭には、次のものもあります。

<div class="grid_8">
  {{form_errors(form)}}
</div>
4

2 に答える 2

4

コールバックを特定のフィールドではなくフォームにアタッチする場合は、プロパティ パスを少し異なる方法で設定する必要があります。

public function isFormValid($data, ExecutionContext $context)
{
    if ( $condition == false ) {
        $context->addViolationAt('[date_of_birth].date_of_birth', 'You are too young!');
    }
}
于 2013-05-22T09:04:13.487 に答える