Я написал простой помощник по представлению Zend. Путь правильный, но помощник работает, когда захочет.
Теперь у меня нет доступа к моим файлам проекта, чтобы вставить код, но вскоре хелпер получает строку (описание продукта, название и т. Д.), Меняет цены в нем (например, от '£.$x'
до '€.$y'
где $y = $x*$exchangeRate
) и возвращает новую строку.
Проблема возникает, когда я передаю параметр. Он не работает даже после return $str;
в первой строке функции с другой логикой. Поэтому я не мог отлаживать помощника.
Если я использую функцию как обычную функцию в представлении – тот же алгоритм работает. Поэтому я не думал, что проблема в алгоритме. Еще более интересным и забавным является то, что вчера он работал с помощником. Сегодня он работал на мгновение только с echo $this->currencyExchange('32121');
или аналогичные строки, и в конце дня он прекратил работать абсолютно.
Изменить: Вот код:
class Helper_View_CurrencyTransform extends Zend_View_Helper_Abstract { public function currencyTransform( $str, $currencyTo = 2 ) { $mCurrencies = new Models_Currencies(); $mCurrenciesExchangeRates = new Models_CurrenciesExchangeRates(); $currencyFrom = 2; // GBP (default) $currencyFromSymbol = $mCurrencies->getCurrencySymbol($currencyFrom); $currencyTo = $mCurrencies->getCurrencyIdByField('symbol', $this->user->currency_symbol); $rate = $mCurrenciesExchangeRates->getExchangeRate($currencyFrom, $currencyTo); $match = array(); $regex = '/'.$currencyFromSymbol.'([0-9]+([\,][0-9])?+[\.]*[0-9]*)/'; preg_match_all($regex, $str, $match); $amounts = $match[1]; if(!empty($amounts)) { foreach($amounts as &$amount) { $amount = number_format($amount*$rate, 2, '.', ','); } foreach($match[1] as &$m) { $m = $currencyFromSymbol.$m; } foreach($amounts as &$a) { $a = $this->user->currency_symbol.$a; } $str = str_replace($match[1], $amounts, $str); } return $str; } }
И я называю это с помощью $this->currencyTransform($string);
Есть идеи?