2011-09-11 6 views
0

코드 점화 기 2.0.3을 사용하고 있습니다.코드 점화 기 form_validation 치명적인 오류가 발생했습니다

내 컨트롤러 $에 로딩 form_validation를하려고하면 this->로드 -> 라이브러리 ('form_validation'은), 나는 오류 메시지 :

가 login.php에서 라인 (44)에

Fatal error: Call to a member function set_rules() on a non-object in D:\Installation\xampp\htdocs\MyApp\application\controllers\login.php on line 44

이 무엇을이다 나는 가지고있다 :

$this->form_validation->set_rules('name', 'Name', 'trim|required');

autoload.php에서 form_validation을로드 할 때 오류가 없다.

왜 이런 일이 발생합니까?

Causes Error - 
$this->form_validation->set_error_delimiters('name', 'Name', 'trim|required'); 
$this->load->library('form_validation'); 

Works - 
$this->load->library('form_validation'); 
$this->form_validation->set_error_delimiters('name', 'Name', 'trim|required'); 

클래스가로드되기 전에 당신은 클래스의 메소드를 호출하고 : 그 오류를 재현 할 수

답변

2

있는 유일한 방법은 library의 위치와 validation 플립 - 플롭이었다. 이렇게해도 유효성 검사를 자동으로로드하면 오류가 발생하지 않는 이유가 설명됩니다.

+0

예, 여기서 유일한 의미가 있습니다. 라이브러리가 잘못된 방법으로로드 되었기 때문일 수도 있습니다 (이 점은 의심 스럽지만). 컨트롤러 클래스 내부의 여러 메소드에서 사용하고자 할 때'__construct() '대신에'index()'에서로드하는 것과 같을 것입니다. –

+0

도 그렇게 할 것입니다. 어쩌면 이것이 OP의 첫 번째 대답 일 것입니다. : - | – Dawson

+0

OP와 동일한 문제가 있고 코드가 올바른 순서로되어 있습니다 : '$ this-> load-> library ('form_validation'); $ this-> form_validation-> set_rules ('이메일', '이메일', '필요'); 먼저 같은 문제에서' 결과 :주의 메시지 : PHP는 오류가 심각도를 발생했습니다'정의되지 않은 속성 : Homepage :: $ form_validation 파일 이름 : controllers/homepage.php 줄 번호 : 68', 다음 '치명적인 오류 :/Users/jzuckerman/Sites /에있는 개체가 아닌 개체의 set_rules() 멤버 함수를 호출하십시오. ally/application/controllers/homepage.php on line 68' –

0

로더 코드 내에서 CodeIgniter는 "get_instance"메소드를 통해로드 된 객체를 추가 할 Controller 인스턴스를 가져옵니다.

Controller의 하위 클래스에서 해당 메소드를 실행하고 반환되는 항목을 확인하십시오.

필자의 경우 필자는 필자가 사용하지 않은 오토로드 된 컨트롤러 하위 클래스 였고 내 코드에서 확장하지 못했습니다. 모든 페이지 컨트롤러를 가지고 있어야만하는 아이디어의 스텁 클래스였습니다. 확장 된 CI_Controller 인 기본 사이트 컨트롤러를 확장합니다. 이 객체를 확장하지 않고 오히려 내 페이지 컨트롤러에서 CI_Controller를 우회한다는 점을 강조합니다. CodeIgniter가 인스턴스에 해당 객체를 추가하고 싶다는 생각이 들었지만 어쨌든 자동로드 라이브러리 목록에서 해당 객체를 제거해야했습니다.

크레이지이지만 어쩌면 당신에게도 도움이 될 것입니다.

관련 문제