29

symfony フォームで複雑な検証が行われており、コントローラーから特定のフィールドにエラーを割り当てられるようにする必要があります。現在、次のようにグローバルエラーが発生しています。

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

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

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

4

1 に答える 1

58

IRC の助けのおかげで (@fklauthan に感謝します!)、答えを思いつきました。

SF2 のすべてのフィールドは、実際にはフォームのインスタンスです。必要なことは、フィールドのフォーム オブジェクトにアクセスし、それにエラーを追加することです。ありがたいことに、symfony は埋め込みフォーム/フィールドを取得する方法を提供します。

私のコードは次のとおりです。

$error = new FormError("There is an error with the field");
$form->get('field')->addError($error);

一部の人々が指摘したように、ファイルの先頭に FormError クラスを含める必要があります。 use Symfony\Component\Form\FormError;

于 2012-08-29T04:10:54.287 に答える