2011-06-13 15 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

+0

@Krish 현재 모든 에러를 표시하고 있습니다. '. 그러나이 방법은 전자 메일과 암호 모두 오류를 별도로 인쇄합니다. 필드 중 하나라도 잘못된 경우 하나의 오류 만 표시하려고합니다. – Roman

+2

더 나은 질문은 왜 단일 오류를 표시 하시겠습니까? 사용자가 잘못 입력 한 필드를 알 수 없습니다. –

답변

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가 원하는 모든 오류를 보여줍니다. –

+0

validation_errors()가 오류 만 출력합니까? 에코 나 프린트가 필요하지 않나요? –

+1

@ Jorge : 폼의 유효성을 검사하는 동안 오류가 발생하여 ***이 포함 된 문자열을 포함한다는 것을 의미합니다. OP가 원하는 것의 정반대. 사실, 그의 질문은 전혀 분명하지 않습니다. 폼 유효성 검사 메시지가 실제로 필드/규칙 집합에 적용될 때 * 필드 검증을위한 메시지를 얻으려고합니다. –

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

나는 일을 할 것입니다 규칙에 동일한 오류 메시지를 설정, 생각 :

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 
+0

문자열 대신 배열이 메시지로 작동하는지 궁금합니다 ... –

+0

두 가지 모두에 대해 동일한 오류 메시지가 설정되지 않으면 모든 오류를 반복하는 경우 둘 다 표시됩니다. –

+0

편집에 - 실제로 OP의 예에서 * 이것을 * 실제로 사용 하시겠습니까? 2 개의 필드와 여러 개의 규칙이 있기 때문에 작동하지 않습니다. –

3

으로 반복)과, form_error()를 사용하여 확인 단일 오류 문자열에 유효하지 않은 필드 이름을 추가,

1

이보기에 당신은이 작업을 수행 할 수 있습니다

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