Ich muss eine Liste der Länder abrufen, sortiert nach alphabetischer Reihenfolge. Da ich die Entität in vier Sprachen übersetzt habe (Englisch, Französisch, Spanisch und Chinesisch), habe ich gedmo doctrine extensions verwendet, um die Übersetzung zu verwalten. Das Problem ist, wenn ich diese Liste in einer Art Einheit Formularfeld holen:Abfrage im Entitätsformularfeld erstellen
$form = $builder->add('country', 'entity',
array('class' => 'GroupCommonBundle:Country',
'query_builder' => function(EntityRepository $er) {
$query = $er->createQueryBuilder('c')->orderBy('c.name');
}
die Ergebnisse sortiert werden als ursprüngliche Einheit (Englisch) definiert ist und nicht aktuelle locale (spanisch oder französisch), was ich wirklich brauchen. Eigentlich benutze ich $this->container->getParameter('locale')
Ich habe versucht, einen Haken in der Abfrage zu zwingen, wie here erklärt:
$query->getQuery()->setHint(\Gedmo\Translatable\TranslatableListener::HINT_TRANSLATABLE_LOCALE, $this->container->getParameter('locale'));
aber AFAIK funktioniert dies nur, wenn die Abfrage als dql geschrieben:
$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'));
was von der Entität Formularfeld nicht erlaubt ist, weil es auf eine queryBuilder object wartet.
Also, ich muss meine Sammlung übersetzt und in seiner aktuellen Sprache in einem Formular sortiert bekommen. Weiß jemand, wie das erreicht werden kann?
Der richtige Weg für die Übersetzung ausgewählter Felder: http://StackOverflow.com/a/14150093/1232526 – Noy
@Noy: Er spricht von einem viel fortgeschritteneren Fall, der Gedmo übersetzbare Entitäten beinhaltet. Ihr vorgeschlagener Weg ist hier nicht anwendbar. – Ryall