2013-02-01 19 views
5

Ben https://github.com/stof/StofDoctrineExtensionsBundle yüklenmiş ve bir ülke varlık belirli bir alanda çevrilebilir ve Sluggable ikisini de kullanmak var:Translated ve Sluggable, DoctrineExtensions ile nasıl birleştirilir?

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

bir sayfanın URL olmalıdır .../ülke/fransa İngilizce kullanıcıları ve için .../Alman kullanıcılar için arazi/frankreich.

Bir denetleyicide, sözdizimini belirli bir dilde alıyorum ve bu yerel aygıta özgü sümükle filtreleniyorum Bir ülke varlığını almak istiyorum.

Burada veya belgelerde nasıl bir şey bulunamadığı hakkında bir şey bulamadım.

Bunu nasıl çözeceğiniz konusunda herhangi bir ipucu için teşekkürler!

cevap

3

Sadece solution in this blog article bulundu. Çözüm, çeviri tablosuna otomatik olarak katılmak için TranslationWalker'ın ORM sorgu ipucunu kullanıyor, böylece çevrilmiş herhangi bir alana göre sipariş verebilir veya filtreleyebilirsiniz. Bu harika! Bu arada

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

:

kod sonra şöyle görünür Eğer geri dönüş kullanmak istiyorsanız o zaman sadece bunu yapılandırmak (belirli bir çeviri varsa, yani varsayılan dize/metni almak) setTranslationFallback yöntem çağrısı (doctrine_extensions.yml) aracılığıyla gedmo.listener.translatable hizmetiniz.

İlgili konular