如何扩展zend表单元素以创建自定义货币字段。
例如:
$amount = new Example_Form_Element_Currency(1234);
输出应该是这样的:$1,234.00
。
我想要一个自定义帮助货币。
答案 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。