2011-01-22 21 views
3

我看到了這段代碼。我刪除了一些不相關的代碼,以使它更簡單(就像檢查密碼匹配的驗證器一樣)。爲什麼要在此過濾?它應該在控制器中嗎?

$password = new Zend_Form_Element_Password('password'); 
$password->addFilter(new My_Filters_Sha()); 

$password2 = new Zend_Form_Element_Password('password2'); 
$password2->addFilter(new My_Filters_Sha()); 

我的問題是關於過濾器。我的猜測是,編寫它的人將密碼保存在數據庫中作爲哈希值,這就是爲什麼他們使用過濾器對密碼進行哈希處理。但是有一個過濾器處理哈希的點是什麼?在帳戶創建過程中,這不應該在控制器中完成一次嗎?收到輸入後,將其處理爲散列並保存。將這做成過濾器是否有意義?

回答

2

您的控制器的責任是處理請求並委託給相應的模型。散列密碼是商業邏輯。業務邏輯在控制器中沒有位置,但屬於模型。你的Form類是一個Model類,因此可以將過濾器放在那裏。

+0

這是我第一次把這個窗體看作Model類。所以,讓我們說,在註冊時,我還檢查用戶名是否可用。你是說我應該把這張支票也放在表格裏?不在控制器中? – samquo 2011-01-22 23:43:04

相關問題