2016-06-01 3 views
1

Ich habe user.yml Datei in meinem Validation Ordner in Symfony und ich benutze es um die Daten zu validieren. zB:Wie setze ich die erforderliche false in der Symfony Validierung (Yml) Datei

\APIBundle\Entity\User: 
properties: 
    startDate: 
     - NotBlank: { message: 'Start date cannot be blank.' } 
     - Date: { message: 'Enter the valid start date.' } 

Ich wollte „startdate“ Feld validieren, wenn der Benutzer sie bestanden haben, die jetzt funktioniert. Aber wenn der Benutzer das "StartDate" nicht übergeben wird, wollte ich diese Validierung überspringen. Diese Validierung wurde als optional gewünscht.

Wie erreichen?

habe ich versucht, wie folgend falsch gesetzt werden müssen:

\APIBundle\Entity\User: 
properties: 
    startDate: 
     - Required: false 
     - NotBlank: { message: 'Start date cannot be blank.' } 
     - Date: { message: 'Enter the valid start date.' } 

Welche

Antwort

0

Entfernen Sie einfach NotBlank

\APIBundle\Entity\User: 
properties: 
    startDate: 
     - Date: { message: 'Enter the valid start date.' } 

NotBlank ist Äquivalent von reqired.

0

den Fehler nicht funktioniert symfony zurückkehren, da Sie NotBlank verwenden, wird das Feld immer erforderlich. Sie möchten das Feld jedoch nur dann validieren, wenn es tatsächlich festgelegt ist.

Ich denke, dass Sie nicht erreichen, dass mit Symfony-internen Validierung, aber Sie können Ihre benutzerdefinierten Validierung Constraint schreiben, die diesen Fall behandelt: http://symfony.com/doc/current/cookbook/validation/custom_constraint.html

1

erforderlich Affekte see nur Rendering:

Wenn das stimmt, ein HTML5 erforderlich Attribut gerendert werden. Das entsprechende Label wird auch mit einer erforderlichen Klasse gerendert.

Dies ist oberflächlich und unabhängig von der Validierung. Am besten, wenn Sie Symfony raten Ihren Feldtyp, dann wird der Wert dieser Option aus Ihrer Validierung Informationen erraten werden.

Sie empty_data in Ihrem Formular wie so verwenden sollten:

$builder->add('gender', ChoiceType::class, array(
    'choices' => array(
     'm' => 'Male', 
     'f' => 'Female' 
    ), 
    'required' => false, 
    'placeholder' => 'Choose your gender', 
    'empty_data' => null 
)); 

Ihr Unternehmen sollte in diesem Fall haben die Eigenschaft nullable=true und natürlich wie erwähnt NotBlank sollten nicht verwendet werden

Verwandte Themen