web-dev-qa-db-ja.com

symfony2のコントローラーからのフィールド固有のエラーの追加

Symfonyフォームで複雑な検証が行われているので、コントローラーから特定のフィールドにエラーを割り当てることができる必要があります。現在、私はこのように機能するグローバルエラーがあります:

$error = new formerror("There is an error with the form");
$form->addError($error);

しかし、それは特定のフィールドにバインドされたものではなく、グローバルエラーを作成します。

コントローラから特定のフィールドにエラーをスローする方法はありますか?

26
MrGlass

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;

54
MrGlass