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.
Wie kann 'allowExtraFields' Option erklären die seltsame Nachricht über Feld' text'? – gremo
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