Potrzebuję pobrać listę krajów, posortowaną według kolejności alfabetycznej. Ponieważ podmiot został przetłumaczony na cztery języki (angielski, francuski, hiszpański i chiński), użyłem gedmo doctrine extensions w celu zarządzania tłumaczeniem. Problemem jest to, kiedy pobrać tę listę w polu typu forma jednostki:Utwórz zapytanie w polu formularza jednostki
$form = $builder->add('country', 'entity',
array('class' => 'GroupCommonBundle:Country',
'query_builder' => function(EntityRepository $er) {
$query = $er->createQueryBuilder('c')->orderBy('c.name');
}
wyniki są klasyfikowane jako oryginalna jednostka zdefiniowana (w języku angielskim), a nie bieżące locale (hiszpański lub francuski), co jest naprawdę potrzebne. Właściwie używam $this->container->getParameter('locale')
Próbowałem zmusić hak w zapytaniu, jak wyjaśniono here:
$query->getQuery()->setHint(\Gedmo\Translatable\TranslatableListener::HINT_TRANSLATABLE_LOCALE, $this->container->getParameter('locale'));
ale AFAIK, to działa tylko wtedy, gdy zapytanie jest napisane jak 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'));
która jest niedozwolona przez formularz encji, ponieważ czeka na queryBuilder object.
Potrzebuję więc, aby moja kolekcja została przetłumaczona i posortowana w jego obecnym języku w formie. Ktoś wie, jak można to osiągnąć?
Właściwy sposób tłumaczenia wybranych pól: http://stackoverflow.com/a/14150093/1232526 – Noy
@Noy: Mówi o znacznie bardziej zaawansowanym przypadku, obejmującym obiekty do tłumaczenia Gedmo. Twój sugerowany sposób nie ma zastosowania tutaj. – Ryall