【问题标题】:Missing currencies in symfony 1.4 with sweden culture带有瑞典文化的 symfony 1.4 中缺少货币
【发布时间】:2011-09-29 08:58:03
【问题描述】:

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

以下货币不存在: BGN、MXN、卢布

小部件初始化是:

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'
))

货币来自网络服务,因此我不能简单地删除失败的货币。 对于其他文化,一切正常。

是否有解决方案/补丁/东西?或者我如何自己添加丢失的货币? 提前感谢您的帮助!

【问题讨论】:

    标签: symfony1 internationalization currency


    【解决方案1】:

    您可以像这样过滤掉丢失的货币:

    $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=墨西哥比索,RUB=俄罗斯卢贝尔),root.dat 已经包含它们,并且在其他文化中一切正常。我确实修改了sw.dat,问题就消失了。感谢您为我指明这个方向!
    • 好的。我没有检查它们是否在 root.dat 中。您可以在 symfony 网站上检查这是否已经是一个错误,并提交您的更正。
    猜你喜欢
    • 2018-06-07
    • 1970-01-01
    • 1970-01-01
    • 2021-12-16
    • 2015-04-07
    • 1970-01-01
    • 1970-01-01
    • 2012-01-29
    • 1970-01-01
    相关资源
    最近更新 更多