0

如何扩展 zend 表单元素以创建自定义货币字段。

例如:

$amount = new Example_Form_Element_Currency(1234);

输出应该是这样的:$1,234.00.

我想要一个自定义的货币助手。

4

2 回答 2

0

听起来您正在寻找应用过滤器

我认为没有内置的货币过滤器,但是创建一个来运行提交的值number_format()或类似的值并不难。

class My_Filter_Currency implements Zend_Filter_Interface
{
    public function filter($value)
    {
        return '$' . number_format($value, 2);
    }
}
于 2011-06-10T16:35:11.847 回答
0

目前我也在使用这样的过滤器,但是当将值返回到控制器时,我的函数看起来很脏。我在这里寻找更好的解决方案。

                    ->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。

于 2011-11-12T22:28:05.477 回答