Недостающие валюты в Symfony 1.4 со шведской культурой - PullRequest
1 голос
/ 06 июля 2011

Мне нужно создать многоязычное приложение с функцией обмена валют, используя Diem 5.1 (на самом деле это symfony 1.4). Я полагаюсь на sfWidgetFormI18nChoiceCurrency, но он вызывает исключение со шведской культурой:

Следующие валюты не существуют: Лв., 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'
))

Валюты поступают из веб-службы, поэтому я не могу просто удалить неисправные. С другими культурами все работает отлично.

Есть ли где-нибудь решение / патч / что-то? Или как самому добавить недостающие валюты? Заранее спасибо за любую помощь!

1 Ответ

0 голосов
/ 06 июля 2011

Вы можете отфильтровать недостающие валюты следующим образом:

$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.код (плохой)

...