2011-06-13 175 views
1

我可以在CodeIgniter中顯示多個表單字段的單個消息嗎? 例如,我爲電子郵件和密碼字段設置了以下規則。如果這兩個字段中的任何一個無效,我只想顯示一條消息。 (如無效的電子郵件或密碼「)Codeigniter表單驗證

$this->form_validation->set_rules('email_address', 'Email Address', 'valid_email|required'); 
$this->form_validation->set_rules('password', 'Password', 'required|min_length[4]'); 

我如何能做到這一點感謝所有幫助

編輯:。很抱歉,如果我的問題是不清楚目前我使用validation_errors(),和我但是,如果兩個字段中的任何一個(電子郵件或密碼)無效,我想顯示相同的錯誤消息,無論電子郵件無效,或者密碼無效或兩者都無效,它應該打印一條消息,如:無效的電子郵件或密碼。

+2

你是如何在視圖中顯示錯誤? – Vamsi 2011-06-13 09:49:50

+0

@Krish此刻我顯示所有錯誤'<?php echo validation_errors(); ?>'。但是這種方法將分別打印電子郵件和密碼兩種錯誤。如果任何字段無效,我只想顯示單個錯誤。 – Roman 2011-06-13 10:10:09

+2

更好的問題是,爲什麼要顯示單個錯誤?用戶不知道他們填寫的是哪個字段 – 2011-06-13 10:11:51

回答

3

我不確定這是否是您需要的,但您可以嘗試:

if($this->form_validation->run() == FALSE){ 
    $message = 'Your error message here'; //validation_errors() works too. 
}else{ 
    $message = 'Your success message here'; 
} 

$this->load->view('yourview',array('feedback_message'=>$message)); 

如果您不在乎哪個字段無效,那麼此代碼段就可以。 「有什麼不對,我不在乎什麼是錯的,告訴用戶」。

+1

如果他只使用這兩個字段,但'validation_errors()'會顯示所有的錯誤 - 不完全是OP想要的。 – 2011-06-13 09:58:09

+0

validation_errors()只輸出錯誤?它不需要回聲,打印或其他? – 2011-06-13 10:10:12

+1

@Jorge:我的意思是它包含一個字符串,其中包含所有遇到驗證表單時遇到的錯誤。與OP想要的完全相反。實際上,他的問題根本不是很清楚 - 當表單驗證消息實際應用於字段/規則集時,他要求獲取驗證字段的消息。 – 2011-06-13 10:12:47

0
$this->form_validation->set_message('rule', 'Error Message'); 

我認爲,設定相同的錯誤消息,兩者的規則將做的工作;)

+0

我不知道是否數組而不是字符串會作爲消息工作... – 2011-06-13 09:55:46

+0

爲兩者設置相同的錯誤消息將不起作用,如果他循環遍歷所有錯誤,它們都會顯示。 – 2011-06-13 09:55:54

+0

對你的編輯 - 你將如何實際*在OP的例子中使用這個?它不起作用,因爲有2個字段和幾個規則。 – 2011-06-13 10:02:14

3

遍歷每個字段並檢查使用form_error(),添加任何無效的字段名稱到一個錯誤字符串:

if($this->form_validation->run() == FALSE){ 
    $fields = array('email_address', 'password'); 
    $invalid_fields = array(); //where we'll store invalid field names 
    foreach($fields as $field){ 
     if(form_error($field)){ 
     $invalid_fields[] = $field; 
     } 
    } 
    $data['error_message'] = 'The following fields are invalid: ' . implode(",", $invalid_fields); 
} 
$this->load->view('yourview', $data); //if !empty($error_message) in view echo it out 
1

在你看來,你可以只是這樣做:

<?php if(!empty($this->form_validation->_error_array)): ?> 
    <p>There were some errors.</p> 
<?php endif; ?>