2013-02-01 26 views
5

我已經安裝https://github.com/stof/StofDoctrineExtensionsBundle,並在國家實體上的特定領域同時使用平移並且Sluggable:如何將DoctrineExtensions中的Translatable和Sluggable結合起來?

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

一個網頁的網址應該是... /國家/法國對英語的用戶和... /土地/ frankreich德國用戶。

在控制器中,我得到了特定語言的slu and,並通過本地特定的slu filtered篩選我想要檢索的國家實體。

我還沒有在這裏或在關於如何做到這一點的文檔中找到任何東西。

謝謝你有關如何解決這個問題的任何提示!

回答

3

剛剛發現solution in this blog article。解決方案是使用TranslationWalker的ORM查詢提示自動加入翻譯表,因此您可以按任何翻譯字段進行排序或過濾。這很棒!

然後,代碼看起來類似:

... 
->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(); 

順便說一句:如果你想後備使用(即,如果沒有具體的翻譯可用,採用默認的字符串/文本),然後只將其配置爲通過setTranslationFallback方法調用您的gedmo.listener.translatable服務(在doctrine_extensions.yml中)。

相關問題