2016-03-21 12 views
5

Ho una forma di lavoro, ha un campo obbligatorio che deve essere NotBlank:Symfony convalida messaggio di errore per mancante obbligatori Formulario di Campo

/** 
* @Assert\NotBlank 
*/ 
private $field1 = ''; 

Se specifico questo campo nella richiesta, ma lasciare il campo vuoto , ottengo questa risposta:

{ 
    "code":400, 
    "message":"Validation Failed", 
    "errors":{ 
     "children":{ 
      "field1":{ 
       "errors":["Field should not be blank"] 
      } 
     } 
    } 
} 

Se tralascio questo campo dalla richiesta, ottengo questa risposta:

{ 
    "code":400, 
    "message":"Validation Failed", 
    "errors":{ 
     "errors":["Field should not be blank"] 
    } 
} 

C'è qualche logica di Symfony incorporata da qualche parte che posso usare per far corrispondere il secondo esempio al primo esempio?

[modifica] Stava usando Symfony 2.5 - ora aggiornato a Symfony 2.8.3, lo stesso problema.

+0

Forse stai cercando 'NotNull' invece' NotBlank'? – walkingRed

+0

@walkingRed - Ho provato questo. Niente da fare. – StampyCode

+0

Qual è l'obiettivo finale? Hai bisogno di identificare quale campo manca e innescare una condizione di errore? – miken32

risposta

3

Questo comportamento può verificarsi quando il campo non viene presentato nell'oggetto modulo stesso. In questo caso, il programma di mappatura delle violazioni non può mappare l'errore di convalida su uno dei campi. Si prega di verificare che il campo sia presentato nell'oggetto modulo.

+0

Il campo è presente nell'oggetto modulo, ma non è presente nei dati POST. Mi sembra irragionevole che, se l'utente omette un campo obbligatorio, per impostazione predefinita dovrebbe ricevere un messaggio di errore completamente inutile. – StampyCode

+0

Non riesco a riprodurre questo comportamento. Ma se rimuovo il campo dall'oggetto modulo ho ottenuto lo stesso risultato che hai descritto. –

+0

Quindi ora mi rendo conto che sto usando FOSBundle per l'elaborazione di form e response, sto facendo qualche altra analisi per trovare quale componente non si sta comportando. – StampyCode

0

Si sta convalidando un'entità dopo aver gestito la richiesta. Se si passa l'entità con 'campo1' vuoto al validatore, questo oggetto non è sempre valido. Sembra un errore di convalida a livello globale.

+0

Se si sceglie di non passare un campo nella richiesta, viene utilizzato il valore predefinito, come in una richiesta HTTP PATCH. Se il campo non è valido, il modulo dovrebbe indicare * quale * campo non è valido, non solo lasciarti indovinare quale manca. – StampyCode

+0

La convalida del valore predefinito dovrebbe essere un successo. La convalida sulla proprietà vuota genera un errore di convalida a livello di proprietà. Debug '$ form-> getErrors'. Sembra un errore a livello globale. –

+0

Debug '$ form' oggetto. Ci sarà un vincolo di destinazione. –

Problemi correlati