0

zendフォーム要素を拡張してカスタマイズされた通貨フィールドを作成する方法。

例えば:

$amount = new Example_Form_Element_Currency(1234);

出力は次のようになります$1,234.00

通貨のカスタムヘルパーが欲しいです。

4

2 に答える 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() ) ) );
}

ここで私の問題を見てみると、i18nが付属しています。

于 2011-11-12T22:28:05.477 に答える
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 に答える