2016-11-04 11 views
0

Ich ziehe zu Symfony und habe das Problem mit der Validierung von Post-Daten, die ich sende. Ich habe diese Eigenschaft offizielle Dokumente und setzen in Entity gefolgt:Symfony Validator validiert Post-Daten nicht

/** 
* @ORM\Column(type="string", length=100) 
* @Assert\Length(
*  min = 3, 
*  max = 50, 
*  minMessage = "Your name must be at least {{ limit }} characters long", 
*  maxMessage = "Your name cannot be longer than {{ limit }} characters" 
*) 
*/ 
private $name; 

-Code in der Steuerung ist:

$student = new Student(); 
    $student->setName($request->query->get('name')); 
    $student->setBirth_Date(new \DateTime($request->query->get('date'))); 

    $validator = $this->get('validator'); 
    $errors = $validator->validate($student); 

    if (count($errors) > 0) { 
     /* 
     * Uses a __toString method on the $errors variable which is a 
     * ConstraintViolationList object. This gives us a nice string 
     * for debugging. 
     */ 
     $errorsString = (string) $errors; 

     return new Response('Validation errors: '. $errorsString); 
    } 

    $em = $this->getDoctrine()->getManager(); 
    $em->persist($student); 

    // actually executes the queries (i.e. the INSERT query) 
    $em->flush(); 

    return new Response('Saved new student with id '. $student->getId()); 

Warum es nicht zu validieren und ich immer neuen Eintrag in der Datenbank erhalten? Fehle ich etwas?

+0

Versuchen Sie, einige ungültige Daten zu senden und var_dump ($ student); var_dump ($ fehler); sterben(); nach Zeile '$ errors = $ validator-> validate ($ student);' Und bitte fügen Sie Ergebnisse in Ihre Antwort :) –

Antwort

0

Bitte überprüfen Sie, das ist Sie Validierung Anmerkung constrait konfigurieren, lesen Sie: https://symfony.com/doc/current/validation.html#configuration Und klar Cache

app/console cache:clear 

oder für symfony3

bin/console cache:clear 
+0

immer noch nicht funktioniert, haben Sie eine Idee warum? – Nikanor

+0

vielleicht vergessen Sie Namespace hinzufügen 'verwenden Symfony \ Component \ Validator \ Constraints als Assert;' zu Entität. Ich versuchte Ihren Code und es funktionierte –

+0

Nein, ich habe diese Linie .. gerade kann nicht Validator in Controller. Gibt es eine andere Möglichkeit, den Validator zu laden? Wenn ich $ validator Variable in Logs schreibe, bekomme ich ein leeres Array – Nikanor

0

Hatte validation: { enabled: true, enable_annotations: false } in Config zu setzen. Habe das nicht in der Dokumentation gefunden. Aktivieren Sie auch NotBlank(), bevor Länge für die zweite Validierung benötigt wird.

/** 
    * @ORM\Column(type="string", length=100) 
    * @Assert\NotBlank() 
    * @Assert\Length(
    *  min = 3, 
    *  max = 50, 
    *  minMessage = "Your name must be at least {{ limit }} characters long", 
    *  maxMessage = "Your name cannot be longer than {{ limit }} characters" 
    *) 
    */ 
Verwandte Themen