2012-03-27 6 views
2

Ich habe ein Problem beim Anzeigen von Formularfehlern mit {% form_errors(form) %}. Die angezeigte Meldung ist falsch, die Felder sind invertiert. Ich weiß nicht, ob das ein Fehler oder mein Fehler ist.Symfony form_errors (Formular) falscher Feldname, Fehler oder mein Code ist falsch?

Wie auch immer, dieser Teil meiner Controller-Aktion ist, wo ich eine neue Formulartyp bin Erstellung nicht auf ein beliebiges Objekt oder Einheit gebunden:

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'); 
    } 
} 

Wo SendMailType hat zwei Felder, recipient und text. recipient kann nicht leer sein.

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'; } 
} 

Auf POST{% form_errors(form) %} mit ich erhalte die Fehlermeldung:

Fields "text" are invalid.

Wie Sie das ist völlig falsch, weil das Feld text keine Validierungsregeln festgelegt hat sehen können. Auf der anderen Seite, das recipient Feld selbst zeigt den richtigen Fehler:

This value should not be blank.

Antwort

1

Art überrascht, dass es überhaupt funktioniert. In jedem Fall wird dies das Problem lösen:

+0

Wie kann 'allowExtraFields' Option erklären die seltsame Nachricht über Feld' text'? – gremo

+0

Standardmäßig geht das System davon aus, dass alle Felder validiert werden. Die Beschwerde lautet also, dass "Text" keine Validierung hat und daher ungültig sein muss. Etwas komisch, aber du gehst. – Cerad