アルファベット順にソートされた国のリストを取得する必要があります。エンティティは4つの言語(英語、フランス語、スペイン語、中国語)で翻訳されているので、翻訳を管理するためにgedmo doctrine extensionsを使用しました。私は、エンティティフォームのフィールドタイプにこのリストを取得する際に問題がある:エンティティフォームフィールドでクエリを作成します。
$form = $builder->add('country', 'entity',
array('class' => 'GroupCommonBundle:Country',
'query_builder' => function(EntityRepository $er) {
$query = $er->createQueryBuilder('c')->orderBy('c.name');
}
結果は定義された元のエンティティ(英語)としてソートされていないロケール(スペイン語またはフランス語)現在、私は本当に何を必要としています。実際に私が使用し$this->container->getParameter('locale')
:
$query->getQuery()->setHint(\Gedmo\Translatable\TranslatableListener::HINT_TRANSLATABLE_LOCALE, $this->container->getParameter('locale'));
しかしを私の知る限り、クエリは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'));
queryBuilder objectを待っているため、エンティティフォームで許可されていない
があります。
私は自分のコレクションを現在の言語でフォームに翻訳してソートする必要があります。これがどのように達成されるのか誰もが知っていますか?
選択フィールドを正しく翻訳する方法:http://stackoverflow.com/a/14150093/1232526 – Noy
@Noy:彼は、Gedmo翻訳可能エンティティを含むはるかに高度なケースについて話しています。あなたの提案された方法はここでは適用されません。 – Ryall