2013-04-03 26 views
1

我正試圖在我的應用程序中處理百分比。用戶輸入一個值爲12(12%)。我必須將它存儲在我的數據庫中,比率爲0.12。ZF1:如何處理存儲在數據庫中的百分比和用戶輸入的數據?

然後我必須將它顯示爲12(對於12%)。

我顯示它的部分非常簡單,我使用了一個自定義的View Helper,它將元素值乘以100。

困難的部分是當用戶輸入值時。我首先想到了一個過濾器,它按每100個值進行分割。它用於將值存儲在數據庫中,但是當我檢索值時,方法「getValue()」應用篩選器,以便得到值0.0012。

第二個想法是,我嘗試重寫setValue()方法,以每100個值除數。但是當我填充表單時,setValue也被調用,這也給我0.0012。

我想知道我該如何處理這個問題?你有什麼主意嗎?

謝謝

+1

Mayby使用您的分隔過濾器不是作爲表單元素過濾器,而是在以獨立方式寫入數據庫之前。所以它只適用於更新數據庫。因此,在閱讀您的數據庫和填充表單後,請考慮使用相反的過濾器。所以用戶在表單字段中看到值12。 – Dmonix

+0

設置應該調用方法的條件。即如果設置了$ insert,那麼如果設置$ update,則調用setValue(),但是$ insert不是 - 不要調用它 –

+0

我同意Dmonix。如果你使用像doctrine這樣的東西作爲數據庫包裝,那麼實現這一點真的很容易。 – liz

回答

1

感謝Dmonix評論我解決了這個問題。我創建了我的模型兩種方法來處理的劃分只是數據庫插入/更新前:

public function preInsert($event) 
{ 
    $this->_updatePercentageValue(); 
} 

public function preUpdate($event) 
{ 
    $this->_updatePercentageValue(); 
} 

private function _updatePercentageValue() 
{ 
    $value = $this->getValue(); 
    if ($value != null) { 
     $this->setValue($value/100); 
    } 
} 

我意識到,處理它在形式層面是不是一個好主意,因爲ZF1不給任何鉤在這種情況下更改數據。

相關問題