2011-02-05 5 views
0

폼이 포함 된 모든 내 페이지에 포함 된 바닥 글보기가 있습니다. 양식의 유효성을 검사하기 위해 CI의 양식 유효성 검사 라이브러리를 사용할 수 있기를 바랍니다. 그게 가능하니?보기에서 CodeIgniter 폼 유효성 검사 사용

현재 양식은 PHP_SELF 환경 변수를 사용하여 현재 페이지로 다시 게시됩니다. 유효성 검사에 실패하면 주소 표시 줄에 컨트롤러 이름을로드하기 때문에 컨트롤러에 게시하는 것을 원하지 않습니다. 이는 원하는 동작이 아닙니다.

감사의 말씀을드립니다.

감사합니다,

가즈는

답변

0

방법 중 하나, 지금까지 이상에서 동안, 모든 컨트롤러에서 "접촉"함수를 작성하는 것입니다. 이것은 도서관/도우미 형태 일 수 있습니다.

CI는 기본적으로 다른 컨트롤러에서 한 컨트롤러를 호출 할 수는 없지만이 기능을 사용할 수있는 확장 기능이 있다고 생각합니다.

또 다른 옵션은 AJAX 호출로, 일반 컨트롤러에 게시하고 현재 페이지에 남아있는 동안 유효성을 검사 할 수 있습니다.

0

이 사용 사례에서는 제네릭 컨트롤러로 AJAX 호출을 할 것입니다. 이렇게하면 원본 페이지에 제출하기 전에 오류를 표시 할 수 있습니다.

또 다른 방법은 (약간 더 복잡함) 폼 데이터를 일반 컨트롤러 메서드에 게시하고 현재 URL을 포함하는 숨겨진 입력을 전달하는 것입니다.

다음 플래시 세션 변수를 사용하여 그것을 검증 오류 또는 성공 메시지를 전달, 사용자가 양식을 제출하는 페이지로 리디렉션 할 수 있습니다 양식을 처리하는 일반적인 컨트롤러 방법 : $this->session->set_flashdata('errors',validation_errors())이 (안된)

트릭을 할 수 있습니다

이것에 대해 좋은 점은 ajax의 경우 (리디렉션을 억제)와 아약스가 아닌 경우 모두 일반적인 양식 처리 방법을 사용할 수 있다는 것입니다.

0

다른 모든 사람들과 마찬가지로 AJAX가 가장 좋을 것입니다.

하나의 컨트롤러에서 폼을 하나의 함수로 리디렉션하면 폼 자체 만 컨트롤러를 만들 수 있습니다. 그런 다음 반환 URL에 숨겨진 값을 지정하십시오. 오류가 발생하는 한 플래시 데이터로 다시 보낼 수 있습니다.

붙여 넣기 코드를 복사하지 마십시오. 나쁜 습관과 버그를 보장합니다.

//make sure you load the proper model 
if ($this->form_validation->run() == FALSE){ 
    // invalid 
    $redirect = $this->input->post('url'); 
    $this->session->set_flashdata('errors',validation_errors()); 
    redirect($redirect); 
} else { 
    /* 
     success, do what you want here 
    */ 
    redirect('send them where ever'); 
}