2012-03-27 19 views
2

{% form_errors(form) %}でフォームエラーを表示する際に問題が発生しました。 表示されるメッセージが間違っています。フィールドは反転されています。これがバグか悪いか分からない。Symfony form_errors(form)間違ったフィールド名、バグ、または私のコードが間違っていますか?

とにかく、これは私が任意のオブジェクトまたはエンティティに結合されていない新しいフォームタイプを作成しています私のコントローラのアクションの一部です:SendMailType 2つのフィールド、recipienttextを持って

class MyController extends Controller 
{ 
    public function newAction(Request $request) 
    { 
     // NOTE not passing any data to createForm method 
     $context = $this->get('security.context'); 
     $form = $this->createForm(new SendMailType($context)); 

     if('GET' == $request->getMethod()) // GET 
      return array('form' => $form->createView()); 

     $form->bindRequest($request); // POST 

     if(!$form->isValid()) return array('form' => $form->createView()); 

     return new Response('Form is valid'); 
    } 
} 

recipientは空白にすることはできません。フィールドtextが指定されていません検証ルールを持っていないので、あなたが、これは完全に間違っているを見ることができるように

Fields "text" are invalid.

class SendMailType extends AbstractType 
{ 

    /** 
    * @var Symfony\Component\Security\Core\SecurityContext 
    */ 
    protected $context; 

    public function __construct(SecurityContext $context) 
    { 
     $this->context = $context; 
    } 

    public function buildForm(FormBuilder $builder, array $options) 
    { 
     $builder 
      ->add('recipient', 'text') 
      ->add('text', 'textarea'); 
    } 

    public function getDefaultOptions(array $options) 
    { 
     return array(
      'validation_constraint' => new Collection(array(
       'recipient' => array(new NotBlank()), 
      )) 
     ); 
    } 

    public function getName() { return 'send_mail'; } 
} 

{% form_errors(form) %}を使用して POST に私はエラーを取得しています。それがすべてで働いていたことに驚いの

This value should not be blank.

答えて

1

種類:一方、recipientフィールド自体は正しいエラーを示します。いずれにせよ、これは問題を解決します:

public function getDefaultOptions(array $options) 
{ 
    return array(
     'validation_constraint' => new Collection(array(
      'allowExtraFields' => true, 
      'fields' => array('recipient' => array(new NotBlank())), 
     )) 
    ); 
} 
+0

どのように 'allowExtraFields'オプションはフィールド' text'についての奇妙なメッセージを説明することができますか? – gremo

+0

デフォルトでは、すべてのフィールドが検証されると想定されます。したがって、「テキスト」には妥当性検査がないため、無効でなければならないという苦情があります。ちょっと変だけど、そこに行くよ。 – Cerad

関連する問題