symfony2选择widget_choices的小部件排序

时间:2012-08-01 08:58:28

标签: forms symfony drop-down-menu formbuilder dropdownchoice

我有一个国家选择的注册表。大多数用户来自英国,然后他们背后的方式来自爱尔兰。目前世界其他地方的比例非常小。因此,我想把英国和爱尔兰放在首位,作为首选:

->add('country', 'choice', array(
    'choices' => Locale::getDisplayCountries(\Locale::getDefault()),
    'preferred_choices' => array('GB', 'IE')
))

这项工作正常,但是"爱尔兰"出现在"英国"在分开的,首选的选项中。

有没有办法设置这些顺序,以便UK出现在列表的首位?

3 个答案:

答案 0 :(得分:1)

您检查过this article吗?

你可以通过类比来表达你的形式:

$builder->add('users', 'entity', array(
    'class' => 'AcmeHelloBundle:User',
    'query_builder' => function(EntityRepository $er) {
        return $er->createQueryBuilder('u')
            ->orderBy('u.username', 'ASC');
    },
));

答案 1 :(得分:0)

创建问题:

https://github.com/symfony/symfony/issues/5136

希望将在sf 2.2

中查看

答案 2 :(得分:0)

在修复此问题之前,您可以使用一点JavaScript来至少强制使用默认值。使用JQuery的示例:

<script type="text/javascript">
/* Set the default country to US */
$(document).ready(function() {
  $("select option").filter(function() {
      //may want to use $.trim in here
      return $(this).text() == "United States"; 
  }).prop('selected', true);
});
</script>