Элемент формы Zend для настраиваемой валюты - PullRequest
0 голосов
/ 10 июня 2011

Как расширить элемент формы Zend для создания настраиваемого поля валюты.

Например:

$amount = new Example_Form_Element_Currency(1234);

Выход должен быть таким: $1,234.00.

Мне нужен специальный помощник для валюты.

Ответы [ 2 ]

0 голосов
/ 13 ноября 2011

В данный момент я тоже работаю с таким фильтром, но при возврате значений в контроллер моя функция выглядит грязной. Я ищу лучшее решение здесь.

                    ->addFilter(
                        'Callback',
                        array( 'callback' => function( $value )
                        {
                            $value = str_replace(',', '.', $value);
                            if( is_numeric($value) ){
                                return number_format( 
                                    doubleval( $value ),
                                    2,
                                    ',',
                                    '.'
                                );
                            }else{
                                return $value;
                            }
                        } )
                    )

......

public function getAmount()
{
    return doubleval(  str_replace(',', '.', str_replace('.', '', $this->_value1->getValue() ) ) );
}

Если вы посмотрите, мои проблемы идут с i18n.

0 голосов
/ 10 июня 2011

Звучит так, как будто вы хотите применить фильтр .

Я не думаю, что есть встроенный фильтр валют, однако создать его для запуска не составит труда.представленное значение через number_format() или аналогичное.

class My_Filter_Currency implements Zend_Filter_Interface
{
    public function filter($value)
    {
        return '$' . number_format($value, 2);
    }
}
...