2012-07-30 3 views
2

CodeIgniter에서 로그인 폼이 있다고 가정 해 봅시다 - 개별 입력에 대한 유효성 검사 규칙을 설정할 수 있지만 모델/컨트롤러 수준 오류 및 메시지를 throw 할 수있는 방법이 있습니까?CodeIgniter에서 일반 폼 유효성 검사 오류 설정

특히 아래의 방법으로 TRUE가 반환되지 않으면 양식에 "이메일 주소 또는 비밀번호가 잘못되었습니다."라는 메시지가 다시 표시되기를 바랍니다. 현재 컨트롤러는 뷰와 SET_VALUE를 다시로드()의

public function authorize_user() 
{ 
    $this->db->where('email', $this->input->post('email')); 
    $this->db->where('password', $this->input->post('password')); 

    $q = $this->db->get('users'); 

    if($q->num_rows() == 1){ 
     return true; 
    } 
} 

은 아마 내가이 지나친 그리고 난 그냥 이메일 입력하는 오류 메시지를 첨부해야합니까?

답변

3

이 작업을 수행하기 위해 콜백 함수를 사용할 수 있습니다. 단계는 다음과 같습니다.
1. authorize_user() 함수는 규칙을 설정 한 컨트롤러에 있어야합니다. 내가 콜백 함수에 대한 매개 변수를 추가

$this->form_validation->set_rules('email', 'email', 'callback_authorize_user['.$this->input->post("password").']'); 

참고 :
2. 당신은 유사한 코드를 추가하여 "콜백"규칙을합니다. 이러한 종류의 함수는 자동으로 set_rules()의 첫 번째 인수에 의해 결정되는 매개 변수를받습니다. 이 경우 콜백 함수에 자동으로 전달되는 인수가 전자 메일입니다. 또한 두 번째 매개 변수로 암호를 전달합니다.

3.Add 함수에 각각의 매개 변수 : http://codeigniter.com/user_guide/libraries/form_validation.html#callbacks

는 희망이 도움이 :에서

public function authorize_user($email,$password) 
{ 
    //As I said before, the email is passed automatically cause you set the rule over the email field. 
    $this->db->where('email', $email); 
    $this->db->where('password', $password); 

    $q = $this->db->get('users'); 

    if($q->num_rows() == 1){ 
     return true; 
    } 
} 

더 많은 정보!

+0

아, 감사합니다. 두 번째 매개 변수를 콜백에 추가하는 것에 대해 읽었지만이 방법으로 사용하지는 않았습니다. –