2013-02-01 4 views
5

Mam zainstalowany https://github.com/stof/StofDoctrineExtensionsBundle i używać zarówno do tłumaczenia i Sluggable na określonym obszarze w jednostce Kraj:Jak połączyć pliki Translatable i Sluggable z DoctrineExtensions?

... 
class Country 
{ 
    ... 
    /** 
    * @Gedmo\Translatable 
    * @Gedmo\Slug(fields={"name"}) 
    * @ORM\Column(length=255, nullable=false) 
    */ 
    private $slug; 

URL strony powinny być .../kraj/Francja dla użytkowników angielskim i .../land/frankreich dla użytkowników niemieckich.

W kontrolerze dostaję ślimak w określonym języku i odfiltrowany przez ten specyficzny dla danego kraju ślimak Chcę odzyskać jednostkę krajową.

Nie znalazłem nic tutaj ani w dokumentach o tym, jak to zrobić.

Dzięki za podpowiedź, jak to rozwiązać!

Odpowiedz

3

Właśnie znalazłem solution in this blog article. Rozwiązanie wykorzystuje podpowiedź do zapytania ORM narzędzia TranslationWalker, aby automatycznie dołączyć do tabeli translacji, aby można było zamówić lub przefiltro- wać dowolne przetłumaczone pole. To jest świetne!

Następnie kod wygląda mniej więcej tak:

... 
->createQuery('SELECT...FROM MyFooBundle:Country c WHERE c.slug = :slug...) 
->setParameter('slug', $slug) 
->setHint(
    \Doctrine\ORM\Query::HINT_CUSTOM_OUTPUT_WALKER, 
    'Gedmo\\Translatable\\Query\\TreeWalker\\TranslationWalker' 
) 
->getSingleResult(); 

Przy okazji: jeśli chcesz używać awaryjna (czyli jeśli nie specyficzne tłumaczenie jest dostępne, wziąć domyślny ciąg/tekst), a następnie po prostu go skonfigurować do twoja usługa gedmo.listener.translatable poprzez wywołanie metody setTranslationFallback (w doctrine_extensions.yml).

Powiązane problemy