1

私の 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;

フォームを使用すると、「国 'US' は有効な国ではありません」というエラー メッセージが表示されます。

だから私は探し回った: /src/Symfony/Component/Validator/Constraints/CountryValidator

そして出くわした:

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

だから私はそれを自分のコードに貼り付けて、その内容を確認しました。入っていたのは、次のとおりです。

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

それが持つべき258か国ではなく。

ロケールを en-gb ではなく en に変更する配列に 258 か国が含まれます。

私の質問は、私の parameters.yml がこのように見えるべきかどうかです。

parameters:
    locale: en, en-gb

またはそのようなもの?そのため、en からすべてを取得し、en-gb で必要なものをオーバーライドします。

それともこれはバグですか?(これは、私が使用していたバージョン 2.3.1 のバグのようで、現在は 2.3.5 で修正されています) - この情報を提供してくれた Ritter に感謝します。

4

2 に答える 2

2

同じコードが Symfony 2.1 で正しく動作するため、これはバグだと思います。

ここでバグレポートを提出しました:

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

コメントや追加情報をお気軽に追加してください。

于 2013-09-30T20:17:08.980 に答える