2017-06-19 30 views
0

我在Symfony中使用CountryType字段。它現在顯示的國家名稱首字母爲NL荷蘭。但是我想顯示完整的國家名稱。Symfony:我如何獲得完整的國家名稱

如何顯示完整的國家名稱而不是僅顯示國家名稱首字母縮寫?

代碼如下:

use Symfony\Component\Intl\Intl; 
... 

$countries = Intl::getRegionBundle()->getCountryNames(); 

$builder->add('companyaddresscountry', ChoiceType::class, array(
       'choices' => $countries, 'label'=>'Country')); 
+1

描述更好的問題在哪裏,並添加所有相關的代碼。提示:您應該將國家代碼存儲在數據庫中,而不是翻譯後的名稱。提示:使用INTL組件顯示國家/地區列表(在下拉列表中),只需翻轉數組即可顯示其名稱,而不是代碼。 –

回答

0

您的選擇不是'as values'。您可以使用PHP的功能array_flip

$countries = Intl::getRegionBundle()->getCountryNames(); 

$builder->add('companyaddresscountry', ChoiceType::class, array(
    'choices' => array_flip($countries), 
    'label'=>'Country' 
)); 

翻轉你的陣列或添加參數到您的表單字段「choices_as_values」(該選項不建議使用):

此選項已被棄用,你應該將其刪除你的3.x項目(刪除它將不起作用)。有關2.x的用途,請參閱2.7文檔。

$countries = Intl::getRegionBundle()->getCountryNames(); 

$builder->add('companyaddresscountry', ChoiceType::class, array(
    'choices' => $countries, 
    'label'=>'Country', 
    'choices_as_values' => true 
)); 
0

內部數組$國家,你可以有一個數組,其中的關鍵是隻有2個字母,但值的全稱是這樣的:

$countries 

等號到

array('AF' => 'Afghanistan', ...) 

因此,你可以解析你的數組,並只獲取全名的值

$fullname = []; 
foreach ($countries as $key => $value) { 
    $fullname[] = $value; 
} 
相關問題