使用getCountryNames()时Symfony2 Locale en_gb问题

时间:2013-09-17 17:42:56

标签: php symfony parameters geolocation intl

在我的parameters.yml中我有这个:

parameters:
    locale: en-gb

在我的用户实体中,我有这个:

/**
 * @ORM\Column(name="Country", type="string", length=2)
 * @Assert\Country(message = "The country '{{ value }}' is not a valid country.")
 * @Assert\NotBlank()
 */
private $country;

当我使用表单时,验证会抱怨: “国家'美国'不是一个有效的国家。”

所以我在附近狩猎: / SRC / Symfony的/组件/验证/约束/ CountryValidator

并且遇到了:

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

所以我坚持在我的代码中查看其中的内容。其中的内容是:

array(1) { ["UM"]=> string(27) "U.S. Minor Outlying Islands" } 

而不是它应该拥有的258个国家。

如果我将我的区域设置更改为 en 而不是 en-gb ,我会获得阵列中的258个国家/地区。

所以,我的问题是我的parameters.yml应该是这样的吗?

parameters:
    locale: en, en-gb

还是一些这样的?因此,它需要en和gb所需的一切。

或者这是一个错误吗? (这似乎是我使用的版本中的一个错误.2.3.1现在已修复为2.3.5) - 感谢Ritter提供此信息。

2 个答案:

答案 0 :(得分:2)

我认为这是一个错误,因为相同的代码在Symfony 2.1中正常工作。

我在这里提出了一个错误报告:

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

请随时添加评论或更多信息。

答案 1 :(得分:0)

我相信如果你想指定倍数,你需要使用管道(|)

所以喜欢这个

locale: en|fr|de

希望有所帮助。