messaggio di errore Symfony2 nel campo di input
-
25-10-2019 - |
Domanda
Vorrei visualizzare il messaggio di errore nel campo è per. So come mettere il messaggio di errore nel campo, ma voglio trovare un modo dinamico per controllare dopo ri-submittion, se il valore inserito non è il messaggio di errore stesso. Io uso le annotazioni dottrina.
Per esempio, se il campo è "titolo", il messaggio di errore sarebbe stato "Il titolo deve essere compilato!".
Così il campo del titolo non è vuota più, io fare clic su Invia di nuovo, ed è valido ora. Non voglio controllare ogni singolo campo come
if $entity->getTitle() == "The title must be filled" ...
Sono riuscito a fare questo con non visualizzato div errore nel ramo, e jQuery, ma io voglio sapere se c'è un modo migliore per fare questo dal controllore? Grazie
Soluzione
Mi stai chiedendo come fare correttamente qualcosa nel modo sbagliato ... Se il valore di ingresso non è il valore che si desidera elaborare, dovrebbe non sono mai stati il ??valore per cominciare. Detto questo, sono sicuro che le tue ragioni ...
È necessario ascoltare FormEvents::BIND_CLIENT_DATA
e cancellare i dati del modulo se corrisponde la stringa di errore.
public function buildForm(FormBuilder $builder, array $options)
{
$builder->add('title');
$builder->get('title')->addEventListener(
FormEvents::BIND_CLIENT_DATA,
function(FilterDataEvent $event)
{
if ('The title must be filled' == $event->getData()) {
$event->setData('');
}
},
);
Se si desidera applicare questo comportamento a livello globale è necessario collegare questo listener usando un tipo di estensione modulo che si estende 'field'
. Si avrà bisogno anche di introspezione tutti i possibili messaggi di errore di convalida per il campo corrente utilizzando il validatore e passare questi attraverso il traduttore, poi confrontare i risultati con i dati degli eventi.