2011-01-24 26 views
4

我有一個URL字段的形式。該字段的默認值是:http://。但是這個領域不是必需的。用戶可以跳過它並提交表單。因爲它不是必需的。應該不會返回一個錯誤,因爲他們沒有輸入URL。但現在它確實,因爲http://。如何在CakePHP中使用beforeValidate()?

我聽說我可以使用beforeValidate()來檢查它是否是http://,然後清除URL字段,允許我跳過錯誤消息。

但我不知道如何使用beforeValidate()。我搜索了Google,但沒有找到任何工作示例。我在哪裏放置代碼爲beforeValidate()?它是一個函數嗎?如何從那裏訪問提交的表單數據?

謝謝。

+0

錯誤是什麼意思? – 2011-01-24 21:03:35

+0

它返回驗證錯誤消息,「URL無效」。我需要明確的http://之前驗證,後形式提交,所以CakePHP的跳過領域的空白。 – codemonkey613 2011-01-24 21:18:43

回答

6

是的,beforeValidate()是模型的函數。所以每個模型都有它。你應該如何使用它:

class YourModel extends AppModel { 
    function beforeValidate(){ 
     if($this->data['YourModel']['url_field'] == 'http://'){ 
     unset($this->data['YourModel']['url_field']); 
     } 
     return true; //this is required, otherwise validation will always fail 
    } 
} 
2

而不是硬編碼的http://到表單中,添加適當的驗證網址和使用下面的允許空白

「allowEmpty」 =>真