2012-04-20 102 views
0

在我的控制器中,我有一些數據集,有些值不能從客戶端發送(這不是我的邏輯中的錯誤),而且我也沒有修改數據庫中的相應字段。但是如果值是空字符串,我想拋出一個錯誤。Zend框架驗證:驗證空字符串並且不驗證空值

我該如何使用標準的驗證器來做到這一點?

實施例:

我有表用戶2名的字段:用戶名和密碼。用戶在他的個人資料中可以更改他們中的任何一個或兩者。配置文件是用ExtJS 4編寫的,代理配置了選項writeAllFields: false,因此客戶端只向服務器發送修改後的字段。

在服務器端,如果,例如,用戶名不經

  • $this->_request->getPost('username')
  • $this->_getParam('username')

...還是其他什麼東西(它爲空)發現,我不想驗證它並在數據庫中修改它。

但是如果用戶在用戶名字段中鍵入了一個空字符串,我想驗證它並向用戶顯示一個錯誤,如「用戶名不能爲空」。

這是如何實現的?

+0

給我們一個具體的例子,以便我們可以幫助你。 – Liyali 2012-04-20 14:59:32

+1

聽起來可能是'NotEmpty'驗證器或'setRequired'是你正在尋找的。 – drew010 2012-04-20 17:15:03

+0

你能寫一些例子嗎? – 2012-04-21 04:05:25

回答

0

就我個人而言,我會過濾輸入,然後驗證它。但是,爲了實現自己的目標,這可能會做的伎倆,其直接從docs.

$valid = new Zend_Validate_NotEmpty(); 
$value = ''; 
$result = $valid->isValid($value); 
// returns false 

如果你使用Zend表單創建表單適用什麼drew010提到。在這種情況下,如果未提供輸入,則將元素本身的setRequired()驗證器設置爲true將向用戶顯示錯誤。如果你不使用Zend Form,那麼上面應該指出你在正確的方向。