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

发布于 2024-11-14 15:42:19 字数 184 浏览 3 评论 0原文

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

例如:

$amount = new Example_Form_Element_Currency(1234);

输出应如下所示:$1,234.00

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

How to extend zend form element to create customized currency field.

For example:

$amount = new Example_Form_Element_Currency(1234);

The out put should be like this: $1,234.00.

I want a custom helper for currency.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

枕梦 2024-11-21 15:42:19

听起来您想要应用 过滤器

我认为没有内置的货币过滤器,但是创建一个通过 number_format() 或类似的。

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

Sounds like you're looking to apply a filter.

I don't think there's a built-in currency filter however it wouldn't be difficult to create one to run the submitted value through number_format() or similar.

class My_Filter_Currency implements Zend_Filter_Interface
{
    public function filter($value)
    {
        return '
 . number_format($value, 2);
    }
}
满天都是小星星 2024-11-21 15:42:19

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

                    ->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 带来的。

At the moment I am working with such a filter too but when returning the values to the controller my function looks dirty. I am looking for a better solution here.

                    ->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() ) ) );
}

If you take a look my issues here come with i18n.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文