Ho bisogno di recuperare un elenco di paesi, ordinati in ordine alfabetico. Poiché ho l'entità tradotta in quattro lingue (inglese, francese, spagnolo e cinese), ho utilizzato gedmo doctrine extensions per gestire la traduzione. Il problema è quando vado a prendere questa lista in un'entità di tipo campo modulo:Crea query nel campo modulo entità
$form = $builder->add('country', 'entity',
array('class' => 'GroupCommonBundle:Country',
'query_builder' => function(EntityRepository $er) {
$query = $er->createQueryBuilder('c')->orderBy('c.name');
}
i risultati sono ordinati come un'entità originale definito (inglese) e non parametri locali (spagnolo o francese), ciò che è ho davvero bisogno. In realtà io uso $this->container->getParameter('locale')
Ho provato a forzare un gancio nella query, come spiegato here:
$query->getQuery()->setHint(\Gedmo\Translatable\TranslatableListener::HINT_TRANSLATABLE_LOCALE, $this->container->getParameter('locale'));
ma per quanto ne so, questo funziona solo quando la query viene scritto come dql:
$query = $this->getDoctrine()->getManager()->createQuery('
SELECT c
FROM GroupCommonBundle:Country c
ORDER BY c.name ASC');
$query->setHint(\Gedmo\Translatable\TranslatableListener::HINT_TRANSLATABLE_LOCALE, $this->container->getParameter('locale'));
che non è consentito dal modulo entità archiviato, perché è in attesa di un queryBuilder object.
Quindi, ho bisogno di ottenere la mia collezione tradotta e ordinata nella sua lingua corrente in una forma. Qualcuno sa come questo può essere raggiunto?
Il modo giusto di tradurre i campi selezionati: http://stackoverflow.com/a/14150093/1232526 – Noy
@Noy: Sta parlando di un caso molto più avanzato, che coinvolge entità traducibili Gedmo. Il tuo suggerimento non è applicabile qui. – Ryall