2011-06-10 107 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()))); 
} 

如果你到這裏看看我的問題來與國際化。