我必须使用Diem 5.1(实际上是symfony 1.4)构建一个具有货币兑换功能的多语言应用程序。我依赖 sfWidgetFormI18nChoiceCurrency,但它会引发瑞典文化异常:
以下货币不存在: 保加利亚列弗、墨西哥比索、卢布
小部件初始化为:
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'
))
货币来自网络服务,所以我不能简单地删除失败的货币。 对于其他文化,一切都很好。
有什么解决方案/补丁/东西吗?或者我如何自己添加缺少的货币? 预先感谢您的帮助!
您可以像这样过滤掉缺失的货币:
$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核心代码(坏)