2012-12-09 12 views
6

Jestem na początku projektu i stworzyłem kilka podstawowych funkcji, w tym niestandardowy weryfikator wywołań zwrotnych (sprawdza datę zakończenia jest późniejsza niż data rozpoczęcia). Od tego czasu zacząłem refaktoryzować, aby umożliwić tłumaczenie. Do tej pory nie miałem żadnych problemów ... dopóki nie zacząłem analizować mojego sprawdzania poprawności niestandardowego oddzwaniania.Jak włączyć tłumaczenie komunikatów o błędach sprawdzania poprawności komunikatów Symfony2?

Przeczytałem post online, który twierdził, że mogę podać wartość mojego klucza jako komunikat o błędzie, a Symfony automatycznie przetłumaczy ... ale nie wydaje mi się, że tak jest w moim przypadku. Czy ktoś może mi powiedzieć, jak lub podać link do dokumentacji, aby włączyć tłumaczenia w moich niestandardowych sprawdzaniach?

Oto mój aktualny kod walidacji z kluczem translacji obejmowały:

<?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); 
    } 
} 

Odpowiedz

7

mam ten sam problem. Ponieważ symfony2 szuka w katalogu "validators" tych wiadomości, musisz umieścić swój niestandardowy komunikat o błędzie także w tym katalogu. Na przykład pod app/Resources/translations/validators.en.yml.

Musisz wyczyścić pamięć podręczną, aby działała.

+0

Tak, mam to: D, i została wyczyszczona pamięć podręczna wiele razy 'walidacji: nieprawidłowy: DataZakończenia: Data zakończenia musi być po Rozpocznij dzień spełnienia wymogu – Chris

+0

pliku z tłumaczeniem jest„app/Resources/Tłumaczenia/validators.en .yml ", w mojej odpowiedzi było źle. Czy masz tłumaczenia w tym pliku? Używam metody na moim podmiocie. Próbowałeś tego? http://symfony.com/doc/2.0/reference/constraints/Callback.html -> pierwsza metoda – vincecore

+0

Używam drugiej wymienionej tam metody dla mojego wywołania zwrotnego (funkcja statyczna), ponieważ chcę, aby ta walidacja miała zastosowanie do wszystkich moich podmioty, które mają datę rozpoczęcia/zakończenia. Po skopiowaniu pliku messages.en.yml do validators.en.yml zaczyna działać. Wielkie dzięki za zasugerowanie validators.en.yml. Nie widzę tego na stronie dokumentu, więc dziękuję, że o tym wiesz: D – Chris