2011-06-10 103 views
0

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

例如:

$amount = new Example_Form_Element_Currency(1234); 

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

我想为货币定制助手。

+0

什么类型的元素?你有没有试过扩展标准文本元素?有什么问题? – Niklas 2011-06-10 16:12:22

回答

0

听起来就像你想申请filter

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

class My_Filter_Currency implements Zend_Filter_Interface 
{ 
    public function filter($value) 
    { 
     return '$' . number_format($value, 2); 
    } 
} 
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()))); 
} 

如果你到这里看看我的问题来与国际化。