時纔在CodeIgniter表單驗證類中顯示錯誤首先,我會爲我的壞英語道歉。只有在某些條件符合
假設我有功能控制器這樣的:
function confirm()
{
$this->load->helper(array('form', 'url'));
$this->load->library('form_validation');
$this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email|exist[member.email]');
$this->form_validation->set_rules('secretKey','Secret Key', 'required|callback_secret_check');
$this->form_validation->set_message('exist',"Email don't exist");
$this->form_validation->set_message('secret_check','Invalid confirmation code');
if ($this->form_validation->run() == FALSE)
{
// if error, show form and the error msg
$this->view->full_render('user_confirm') ;
} else {
// if all ok
echo "success" ;
}
}
總之,該功能是用來使用確認碼來驗證新用戶的電子郵件。就像我們在任何需要註冊的網站中找到的一樣。我做了這個功能,以防某些用戶喜歡直接使用確認表單提交他的確認代碼,而不是使用確認URL(我們發送確認URL和確認代碼到他的電子郵件)
只是爲了您的信息,規則「存在」是我自己的規則,通過擴展表單類來檢查提交的電子郵件是否真的存在。對於「callback_secret_check」規則,我創建回調函數(而不是像第一條規則那樣通過擴展表單驗證類)來檢查用戶提交的確認代碼是否是有效的。
現在,假設我有帶確認代碼「12345」的用戶電子郵件「[email protected]」。如果他提交「[email protected]」與代碼「22323」,那麼系統會顯示錯誤消息:
- 無效的確認碼
這種情況下沒有問題。
但是,如果有人提交任何確認碼「[email protected]」,系統會顯示錯誤消息
- 電子郵件不存在
- 無效的確認碼
我想要的只是
- 電子郵件不存在
不顯示「無效的確認碼」,因爲如果電子郵件甚至不存在,我認爲我們不需要告訴任何有關確認碼的信息。任何線索?
感謝您的幫助。
哇!它的工作! (刪除「必需的」技巧)。你能解釋給我嗎?那之後我會盡快接受你的回答。無論如何,技巧的提示。 – wildanr 2010-02-01 12:53:02
好吧,這是一種解決方法,但是如果您需要驗證像100個字段那麼該怎麼辦。然後,所有人都用「if」來做這些事情? – Natrium 2010-02-01 13:09:35
@wildanr,'required'使該字段必須有值,如果沒有,則引發錯誤。從現在開始,第二個領域不再是'需要'的,你必須自己處理。這就是爲什麼我建議你用簡單的「if」來做到這一點,你只有2個領域需要照顧,並且還需要特殊的處理。 @Natrium,我寫'在這種情況下'。另外,如果有100個字段,那麼你必須做錯,因爲作爲用戶,我不想填寫100字段的形式。我所製造的單場最大場數從未超過20場。如果您需要100個字段,請嘗試將其分成多個步驟。 – 2010-02-02 00:35:27