Symfony2のフォームで非エンティティフィールドを検証する最良の方法は何ですか?

タイトルが示唆しているように、フォームに選択フィールド(ラジオhtml入力)があります。このフィールドには、ユーザーが処理を進める前に選択が必要です。

私はバンドルのvalidate.ymlファイルにバリデーションを追加しようとしましたが(フィールドが有効なエンティティフィールドではないというエラーがスローされます)、バリデータを直接Validatorクラスは FormValidatorInterface を実装していないため、Exceptionを受け取りました(コードは以下のとおりです)。

$builder->addValidator(new  CallbackValidator(function(FormInterface $form) {
     if(!$form['has_subalbums']->getData())
     {
         $form->addError(new FormError('Please indicate sub albums'));
     }
}));

エンティティ以外のフィールドを検証する正しい方法は何ですか?

1
symfony 2.1のための完璧な答えを見てください:[Symfony 2:エンティティではなくカスタムフォーム要素を追加する] [1] [1]: stackoverflow.com/q/10950203/354578
追加された 著者 Gregoire,

2 答え

試してください:

use Symfony\Component\Form as Form; [...]

 $builder->addValidator(new Form\CallbackValidator(function($form) {
 if(!$form['has_subalbums']->getData())
 {
     $form->addError(new Form\FormError('Please indicate sub albums'));
 }
 }));
5
追加された
symfony 2.1では非推奨です。 Symfony 2.1でこれを行う方法はありますか?
追加された 著者 Mick,
2
追加された
+1はフォームモデルパターンについて投稿していますが、このケースではこの1つの状況では少し贅沢かもしれません。
追加された 著者 JamesHalsall,
+1は、フォームモデルのパターンです。あなたがアイデアを得ると、本当にきれいです!
追加された 著者 Sgoettschkes,