2011-11-29 3 views
0

내 CodeIgniter의 응용 프로그램에서 작동하지 set_flashdata,하지만 난 사용자 데이터는 몇 번 나는 내가 flashdata을 설정할 수 없습니다 내 컨트롤러에 CodeIgniter를 사용하고

/** 
* this will send the requests for the gmail wrapper 
* @return void 
* @author Sandaruwan 
* */ 

function send_contacts() 
{ 
    $contacts = $this->input->post('contact'); 
    if (count($contacts) != 0 && is_array($contacts)) 
    { 
     $data = $this->gmailmanager->send_messeges($contacts); 

     echo "error message ===>"; print_r($this->message->get_message()); echo "<br/>"; 

     $this->session->set_flashdata('message',$this->message->get_message()); 
     echo "flash data ===>"; print_r($this->session->flashdata('message')); echo "<br/>"; 


     $this->session->set_userdata('user',$this->message->get_message()); 
     echo "user data ===>"; print_r($this->session->userdata('user')); echo "<br/>"; 

     exit; 

     redirect('connections/connection_inviter/invite'); 
    } 
    else 
    { 
     $this->message->set_information(array(_('You have not selected a conatact!'))); 
     $this->session->set_flashdata('message',$this->message->get_message()); 
     redirect('connections/connection_inviter/invite'); 
    } 
} 

이 결과

error message ===> 

    Warning 

     Email sending error! 


    flash data ===> 
    user data ===> 

    Warning 

     Email sending error 

! 
입니다 설정할 수 있습니다

문제는 내가 error messageuserdata을 얻을 수 있지만 flashdata을 얻을 수 없다. 내가 초기화 한 후에 바로 flashdata을 얻을 수없는 이유를 알 수 없다.

일부 컨트롤러에서는 flashdata가 완벽하게 작동합니다.

function invite() { 
$this->load->library("connections/Outlookmanager"); 

print_r($this->ci->session->flashdata('message'); die; 

    //Invite friends links   
$this->data['is_windows']=$this->outlookmanager->is_windows_user(); 
$this->load->view('connections/invite_friends', $this->data); 

} 

제가 인쇄하지 않을 function invite()flashdata 인쇄 UPDATE.

UPDATE

흠. 실제로는 매우 흥미로운 이슈가 있습니다.

나는 으로 바뀌 었습니다. 이제 err으로 바뀌 었습니다. 다시 메시지를 Email sending error으로 변경했으며 다시 작동하지 않습니다. 그럼 다시 err로 바꾼 다음 다시 flashdata가 작동합니다.

이, 내가 오류 메시지 길이 여기에 문제를 일으키는 생각하고, 내가 모르는 어떤 이유

+0

왜 저에게 (-)주는 지 말해주십시오.나는이 하루 종일 붙어있다. ( –

+0

또한 keep_flashdata를 시도했지만 작동하지 않는다. –

답변

4
flashdatas이기 때문이다

(CI 단어 "세션"를 사용하지만) 실제로, 쿠키 및 따라서 다음 요청에서만 사용할 수 있습니다.

정직하게 말하자면, 제작 직후 flashdatas를 설정하고 호출하는 이유가 보이지 않습니다. 대신 오류를 인쇄하고 쓸데없는 단계를 건너 뛰지 마십시오.

여전히 모두를 원하는 경우에, 당신이 지금 메시지, 당신은

UPDATE 나중에 만드는 어떤 요청에 메시지가 있는지

$this->session->set_flashdata('message',$this->message->get_message()); 
echo $this->message->get_message(); 

그래서 수행

시도를 $this->ci 대신 $this 메서드 호출

print_r($this->session->flashdata('message'); 

내가 이런 생각을하는 것을 이미 보았다. 때로는 $this에 대한 참조를 사용하고 때로는 다른 객체에 대한 참조를 사용하고, IIRC는 그 차이점에 대한 질문에 대답하기까지했다. 왜? 왜 위치에 $this을 사용하고 $this->ci->을 다른 위치에 사용합니까? 차이는 있지만 적어도 일관성을 유지하기 위해서는 한 가지 방법을 고집해야합니다. (그리고 나는 "보통"하나를 사용하는 것이 좋습니다)

+0

;) 실제로 리다이렉트 페이지 리디렉션 ('connections/connection_inviter/invite')에있다. 내가 플래시 데이터를 사용하려고 할 때 작동하지 않습니다. 그래서 내가 초기화 직후에 인쇄하려고하는 이유입니다. –

+0

네,하지만 다른 페이지로 리디렉션 중입니다. 거기에서 플래시 데이터를 찾을 수 있습니다. 세션이 인쇄되지 않는다고 말하는 경우,이 문제는 해결되지 않았기 때문에 귀하의 질문은 전혀 명확하지 않습니다. 그래서 당신은 "connections/connection_inviter/invite"에서 flashdatas가 보이지 않는다고 말합니까? –

+0

예. 그것이 사실입니다. 플래시 데이터가 보이지 않습니다. 내 업데이트를 참조하십시오 –

관련 문제