2012-12-09 3 views
6

Sono all'inizio di un progetto e ho creato alcune funzionalità di base, tra cui un validatore di callback personalizzato (convalida la data di fine è successiva alla data di inizio). Da allora ho iniziato il refactoring per abilitare la traduzione. Finora non ho avuto problemi ... fino a quando ho iniziato a cercare di tradurre la mia convalida callback personalizzata.Come abilitare le traduzioni sui messaggi di errore di convalida del callback di Symfony2?

Ho letto un post in linea che affermava che potevo inserire il valore della mia chiave di traduzione come messaggio di errore e Symfony lo tradurrà automaticamente ... ma questo non sembra essere il mio caso. Qualcuno può dirmi come, o fornire un link alla documentazione, per abilitare le traduzioni nelle mie convalide personalizzate?

Ecco il mio codice di convalida corrente con la chiave di traduzione incluso:

<?php 
namespace CG5\BFG\CoreBundle\Validators; 

use Symfony\Component\Validator\ExecutionContext; 

class EndDateValidator 
{ 
    static public function isEndDateValid($entity, ExecutionContext $context) 
    { 
     if ($entity->getEndDate() <= $entity->getStartDate()) 
      $context->addViolationAtSubPath('endDate', 'validation.invalid.enddate', array(), null); 
    } 
} 

risposta

7

ho avuto lo stesso problema. Poiché symfony2 guarda nel catalogo "validatori" per quei messaggi, devi inserire il tuo messaggio di errore personalizzato anche in quel Catalogo. Ad esempio sotto app/Resources/translations/validators.en.yml.

È necessario svuotare la cache affinché funzioni.

+0

Yup, avere quella: D, ed hanno eliminato la cache più volte 'convalida: non valida: enddate: Data fine deve essere dopo l'inizio Date' – Chris

+0

Il file traduzioni è "app/Resources/traduzioni/validators.en .yml ", era sbagliato nella mia risposta. Hai le tue traduzioni in quel file? Sto usando un metodo sulla mia entità. Ci hai provato? http://symfony.com/doc/2.0/reference/constraints/Callback.html -> primo metodo – vincecore

+0

Sto usando il 2 ° metodo elencato lì per il mio callback (funzione statica) perché voglio che questa convalida si applichi a tutti i miei entità che hanno data di inizio/fine. Dopo aver copiato my messages.en.yml su validators.en.yml, inizia a funzionare. Grazie mille per aver suggerito validators.en.yml. Non vedo quello menzionato sulla pagina del documento, quindi grazie per aver saputo questo: D – Chris