2017-08-21 5 views
0

mit Symfony 3.3 habe ich ein Unternehmen mit NotBlank assert:NotBlank assert und "vom Typ String sein muss, null gegeben"

class UserContributorVersion 
{ 
    /** 
    * @var string 
    * 
    * @ORM\Column(type="string") 
    * @Assert\NotBlank() 
    */ 
    private $name; 

    /** 
    * Set name 
    * 
    * @param string $name 
    */ 
    public function setName(string $name) 
    { 
     $this->name = $name; 
    } 
} 

Aber wenn ich Form mit novalidate Attributen bestätigen, ich habe diesen Fehler:

Argument 1 bis AppBundle \ Entity \ UserContributorVersion geben :: setName() muss vom Typ String sein, null

gegeben

ich verstehe nicht, warum Kraft SETN ame (string $ name = null) wenn ich NotBlank assert habe?

Thanks :) Sie

+1

weil, wenn Sie nur die Schaltfläche Senden gedrückt haben, ohne irgendwelche Daten einfügen, dann sind die Felder NULL, und Sie gaben an, dass Sie eine Zeichenfolge erwarten –

Antwort

1

Validierung auf Formulardaten durchgeführt wird. Wenn das Formular für irgendeine Entität angenommen wird (Option data_class ist gesetzt), dann sind Formulardaten die Entität, die geändert werden sollte. Die Validierung wird durchgeführt, nachdem die Anforderungswerte festgelegt wurden, um Datenfelder (in Ihrer Falleinheit) zu bilden.

Sie Formular finden einreichen hier fließen: https://symfony.com/doc/current/form/events.html#submitting-a-form-formevents-pre-submit-formevents-submit-and-formevents-post-submit

enter image description here

Validation als FormEvents::POST_SUBMIT Ereignis registriert ist. Anforderungswerte werden so eingestellt, dass Daten unmittelbar vor dem Ereignis POST_SUBMIT gebildet werden.

+0

Vielen Dank :) Was ist die beste Lösung? Add assert in formType (und entfernen in Entity) oder fügen Sie "= null" auf setName() in entity? :) Danke –

+1

Ich denke, dass 2 –

Verwandte Themen