用于定制货币的Zend表单元素

时间:2011-06-10 16:08:40

标签: php zend-form currency zend-form-element

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

例如:

$amount = new Example_Form_Element_Currency(1234);

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

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

2 个答案:

答案 0 :(得分:0)

听起来您正在申请filter

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

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

答案 1 :(得分: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。