2017-06-19 75 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; 
} 
相关问题