В итоге я расширил класс NumberHelper и просто добавил необходимые валюты в методе __construct()
. Затем я построил еще один метод под названием money
, который просто перебирал произвольную сумму, если мой языковой стандарт был французско-канадский, чтобы убедиться, что пробелы в тысячах не ломаются, и добавить знак доллара через интервал ПОСЛЕ суммы ( полный код ниже).
Я не очень доволен этим, но он выполняет свою работу. Если кто-нибудь может подсказать, как использовать настройку языкового стандарта пользователя в PHP без искажения вставок базы данных, мне было бы интересно.
class CurrencyHelper extends NumberHelper {
var $helpers = array('Session');
function __construct() {
parent::__construct();
$this->addFormat('en_ca', array(
'before' => '$',
'after' => false,
'zero' => 0,
'places' => 2,
'thousands' => ',',
'decimals' => '.',
'negative' => '()',));
$this->addFormat('fr_ca', array(
'before' => false,
'after' => false,
'zero' => 0,
'places' => 2,
'thousands' => ' ',
'decimals' => ',',
'negative' => '()',));
}
function money($amount = 0, $useLocale = true) {
$locale = 'en_ca';
if ($useLocale) {
$s = new CakeSession();
$locale = $s->read('Config.language');
unset($s);
}
$result = str_replace(' ', ' ', $this->currency($amount, $locale)) . ($locale == 'fr_ca' ? ' $' : '');
return $result;
}
}