Symfonyフォームで複雑な検証が行われているので、コントローラーから特定のフィールドにエラーを割り当てることができる必要があります。現在、私はこのように機能するグローバルエラーがあります:
$error = new formerror("There is an error with the form");
$form->addError($error);
しかし、それは特定のフィールドにバインドされたものではなく、グローバルエラーを作成します。
コントローラから特定のフィールドにエラーをスローする方法はありますか?
IRC(@ fkrauthanに感謝!)に関するいくつかの助けのおかげで私は答えを思いついた。
SF2のすべてのフィールドは、実際にはフォームのインスタンスです。あなたがする必要があるのは、フィールドのフォームオブジェクトにアクセスし、そこにエラーを追加することです。ありがたいことに、symfonyは埋め込まれたフォーム/フィールドを取得する方法を提供します。
これが私のコードです:
$error = new FormError("There is an error with the field");
$form->get('field')->addError($error);
一部の人が指摘しているように、ファイルの先頭にFormErrorクラスを含める必要があります。use Symfony\Component\Form\FormError;