2012-08-01 60 views
0

我有一個國家選擇的註冊表單。大部分用戶來自英國,而後面的方式來自愛爾蘭。目前世界其他地區的比例非常小。因此,我希望把英國和愛爾蘭在頂部,作爲優選的選擇:preferred_choices的Symfony2選擇部件排序

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

該工程確定,但「愛爾蘭」會出現上述「英國」,在分離的首選方案。

有沒有什麼辦法可以設置這些順序,讓英國出現在列表的首位?

回答

1

您查看過this article

您可以通過類比公會的形式:

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

感謝您的回覆,但這並不是真正的我以後的事情。我不想改變所有選項的順序,只是首選的順序。另外我不使用實體類型,所以甚至不能使用查詢生成器! – lopsided 2012-08-01 12:28:57

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>