形式实体按换算值排序

got*_*oto 5 symfony

我有一个实体类别,其中有一个代码。此代码是内部代码,我们将其翻译成每种语言。例如,想象一下:

Categories:
---- id:1 Code: "Bread"
---- id:2 Code: "Butter"
Run Code Online (Sandbox Code Playgroud)

我有一个带有表单域实体的表单。我想按翻译后的标签订购。

以英语为例,它将显示

Bread
Butter
Run Code Online (Sandbox Code Playgroud)

但是以法语为例,顺序是不同的

Beurre (butter)
Pain (bread)
Run Code Online (Sandbox Code Playgroud)

所以我不能使用实体字段的orderBy。

我有一个手工制作的解决方案,非常脏:我使用带有翻译标签的选择字段

$categories_translated =array();
$categories= $this->em->getRepository('MyRepo')->findAll();
foreach($categories as $category){
    $categories_translated[$category->getId()]= $this->translator->trans($category);
}
asort($categories_translated);//sorted 

//then later
$builder->add('category','choice',array( 'choices' => $choices_technologies) )
Run Code Online (Sandbox Code Playgroud)

您是否有适当的方法来执行此操作?

小智 0

您的方法是通过基于文件的翻译处理此问题的最佳(也是我认为唯一)方法。通过数据库相关的翻译确实有更多的可能性来解决此类问题。例如: https: //github.com/l3pp4rd/DoctrineExtensions/blob/master/doc/symfony2.md