Symfony1 瑞典文化的symfony 1.4中缺少货币

Symfony1 瑞典文化的symfony 1.4中缺少货币,symfony1,internationalization,currency,Symfony1,Internationalization,Currency,我必须使用Diem 5.1(实际上是symfony 1.4)构建一个具有货币兑换功能的多语言应用程序。我依赖于sfWidgetFormI18nChoiceCurrency,但它对瑞典文化提出了异议: 以下货币不存在: BGN,MXN,RUB 小部件初始化为: sfWidgetFormI18nChoiceCurrency->configure(array( 'culture' => 'sw', 'currencies' => array('HUF', 'AUD', 'BGN',

我必须使用Diem 5.1(实际上是symfony 1.4)构建一个具有货币兑换功能的多语言应用程序。我依赖于sfWidgetFormI18nChoiceCurrency,但它对瑞典文化提出了异议:

以下货币不存在: BGN,MXN,RUB

小部件初始化为:

sfWidgetFormI18nChoiceCurrency->configure(array(
'culture' => 'sw',
'currencies' => array('HUF', 'AUD', 'BGN', 'BRL', 'CAD', 'CHF', 'CNY', 'CZK', 'DKK', 'EUR', 'GBP', 'HKD', 'HRK', 'ISK', 'JPY', 'KRW', 'LTL', 'LVL', 'MXN', 'NOK', 'NZD', 'PLN', 'RON', 'RSD', 'RUB', 'SEK', 'SGD', 'TRY', 'UAH', 'USD', 'ZAR'), 'add_empty' => false, 'default' => 'EUR'
))
这些货币来自Web服务,所以我不能简单地删除失败的货币。 在其他文化中,一切都很好

有什么解决方案/补丁/什么吗?或者我如何自己添加缺少的货币?
提前感谢您的帮助

您可以像这样过滤掉缺少的货币:

$cur = array_diff(
  array('HUF', 'AUD', 'BGN', 'BRL', 'CAD', 'CHF', 'CNY', 'CZK', 'DKK', 'EUR', 'GBP', 'HKD', 'HRK', 'ISK', 'JPY', 'KRW', 'LTL', 'LVL', 'MXN', 'NOK', 'NZD', 'PLN', 'RON', 'RSD', 'RUB', 'SEK', 'SGD', 'TRY', 'UAH', 'USD', 'ZAR'),
  array('BGN', 'MXN', 'RUB')
);  


$w = new sfWidgetFormI18nChoiceCurrency(array(
'culture' => 'sw',
'currencies' => $cur,
'add_empty' => false, 
'default' => 'EUR',
));

echo $w->render('cur');
例外情况来自sfCultureInfo.php(第761行),其中请求的货币与预定义的货币进行比较,以便symfony可以加密以处理它们


但是不应该做的是更改root.dat并添加缺少的货币,但我想这还不是全部,它会更改您的symfony核心代码(坏)

谢谢,但我更愿意正确使用它们,并且只有在无法添加缺少的数据时才这样删除它们……因为这些是有效的货币(BGN=保加利亚列夫,MXN=墨西哥比索,卢布=俄罗斯卢布)root.dat已经包含它们,对于其他文化,一切都很好。我确实修改了sw.dat,问题就解决了。谢谢你给我指明了这个方向!好的。我没有检查它们是否在root.dat中。你可以在symfony网站上检查这是否已经是一个bug,然后提交你的更正。