2012-07-24 1 views
2

codeigniter 설정에서 로그인 도우미를 설정했습니다.도우미에서 변수 세트를 편집 할 때 codeigniter 모델의 오버로드 된 속성을 간접 수정하십시오.

codeigniter 인스턴스를 가져 와서 모델을 호출하고 일부 변수를 설정합니다.

$CI =& get_instance(); 

그런 다음 $CI->load->vars($data);을 사용하면 모든 모델과 뷰에서 변수를 사용할 수 있습니다. $data->errors=array();

내 모델에 오류가있는 경우 내가 예 :

if($query->num_rows()!='1'){$this->error[]="This message does not exist !";} 그런 다음 내 컨트롤러에서 나는이 변수 여부를 확인 할 수있는 오류를 설정할 수있는 아이디어를 다음과 같이 변수의

하나는 오류가 표시되면 채워집니다.

그러나 오류를

메시지를 던지고있다 : 과부하 특성 Mail_model : $ 오류의 간접 수정은 아무런 영향

이 오류는 내 머리 위에 추락하고있다가 없습니다. 나는 오류에 대한 조사를 해봤지만 lehmans 용어에 대한 설명은 해당 솔루션으로 찾을 수 없습니다.

누구든지 도와 줄 수 있습니까? 로 = &

당신은 다음 참조를 통해 변수를로드 한 - -

답변

1

당신은 자신에 대한 참조로 $의 CI 변수를로드 한 당신이 $ CI->로드 -> 바르()

을 사용하기 때문에

$ 데이터를 $ CI 참조로로드 할 필요가 없습니다.

모델과 컨트롤러 (예 : 오류 메시지)간에 메시지를 전달하려면 전역 변수를 사용하는 것이 가장 좋은 방법은 아닙니다.

CodeIgniter의 가장 좋은 옵션은 Flashdata입니다. 이것은 flashdata가 존재하는 정확한 시나리오입니다. CI userguide에서 모든 내용을 읽을 수 있습니다.

+0

여기 플래시 데이터를 어떻게 사용할 수 있습니까? 오류가있는 경우 플래시 데이터를 설정합니다. 그러나 다음 서버 요청 이후에만 사용할 수 있습니다. 아무 쓸모가 없습니다. 제어기가 플래시 데이터로 오류를 설정하는 모델을 호출하지만이 설정 값에 액세스 할 서버 요청이 없습니다. –

+0

"하지만 다음 서버 요청 이후에만 사용할 수 있습니다. 용도..?" - 틀린 - 다음 서버 요청 때까지 사용할 수 있습니다. 따라서 플래시 데이터를 설정 한 다음 – Laurence

+0

p.s. 나는 그것이 진실하다는 것을 압니다 - 그것이 제가하는 일이기 때문입니다. – Laurence

관련 문제