2013-01-03 4 views
0

가능한 중복을 볼 컨트롤러에서 여러 배열을 통과 : 나는 세션 데이터 이그나이터에서 볼 수있는 DB 쿼리를 모두 통과하기 위해 노력하고있어
PHP: “Notice: Undefined variable” and “Notice: Undefined index”는 CodeIgniter는

. 내보기 파일에 'Message : Undefined variable : data'오류가 발생합니다.

문제는 $ idea 변수에 있습니다. 변수가 정의되지 않은 오류를 등록합니다.

컨트롤러 :

public function members() { 

    if($this->session->userdata('is_logged_in')){ 
     $session = $this->session->all_userdata(); 
     $facebook_id = $data['id']; 


     $this->load->model('idea'); 
     $idea = $this->idea->get_idea($facebook_id); 

     //merge the two arrays to get data variable 
     $data = $session + $idea; 
     $this->load->view('members', $data); 
    } else { 
     redirect('main/login'); 
    } 
} 

모델 : 여기

public function get_idea($facebook_id) { 
    $data = array(
     'id' => '', 
     'idea' => '', 
     'facebook_id' => $facebook_id 
    ); 

    $query = $this->db->get('idea', $facebook_id); 

    return $query->result_array(); 

} 

내가 사용했던 자원의 일부입니다 :
- Creating foreach loops using Code Igniter controller and view
- codeigniter: pass array from controller to view
- http://blog.mattheufarmer.com/2010/building-a-website-in-codeigniter-part-ii-getting-data-and-using-it/

도움 주셔서 감사합니다!

+0

같이 할 수있다 : 어떻게 중복인가요?이 질문은 MVC 레이어간에 매개 변수를 전달하는 것과 관련하여 링크 된 질문은 기본 PHP 변수 참조에 대한 것입니다. – Kaivosukeltaja

+0

@Kaivosukeltaja,이 부분을 읽었습니까 : "Codeigniter의 뷰에 세션 데이터와 db 쿼리를 모두 전달하려고합니다. 뷰 파일에 'Message : Undefined variable : data'라는 오류가 표시됩니다. "*? –

+0

@ tereško : 예, 변수에 뷰가 올바르게 전달되지 않았다는 의미입니다. 이 문제에있어서 연결된 질문이 어떻게 도움이됩니까? – Kaivosukeltaja

답변

3

당신은 tereško @ this-

public function members() { 

    if($this->session->userdata('is_logged_in')){ 
     $data['session'] = $this->session->all_userdata(); 
     $facebook_id = $data['id']; 


     $this->load->model('idea'); 
     $data['idea'] = $this->idea->get_idea($facebook_id); 

     $this->load->view('members', $data); 
    } else { 
     redirect('main/login'); 
    } 
} 
+0

고마워요! 나는 바꿨다 : $ facebook_id = $ data [ 'session'] [ 'id']; –

+0

@MichaelF, 여기에 대한 설명이 있습니다. http://stackoverflow.com/a/14122060/1592648 –

+0

그 $ data [ 'id']; 왔어? –

3
$data = $session + $idea; 

아니요. 배열을 병합하는 방법이 아닙니다.

당신이 원하는 것을 할 수있는 청소기, 더 사려 깊은 접근 방식 : 그렇지 않으면

$data = array($session, $idea); 

,

$data = array_merge($session, $idea); 

편집 :

당신이 http://ellislab.com/codeigniter/user-guide/general/views.html

을 어쨌든 읽어야 , 당신이 완전히 바보 같은 짓을하지 않는다면, 당신은 이것을 할 수 있어야합니다. :

$data = array('sesssion' => $sesssion, 'idea' => $idea); 

그리고보기로 전달하십시오. 그리고 나서 $ session으로 세션을, $ idea로 아이디어를 호출 할 수 있습니다. 설명하기 :

$data = array('name' => 'josh', 'sex' => 'often'); 
$this->load->view('welcome', $data); 

그리고 내보기에 :

<? echo "$name has sex $sex"; // returns josh has sex often ?> 

을보기에, 키는 변수가되고 값 ($ 데이터의 키했다) 그 변수들에 의해 액세스 할 수 있습니다. 당신은 $ data를 부르지 않고, 당신은 그 열쇠를 부릅니다.

$data = array('key' => 'value'); 

다른 문제가 있으면 알려주세요. :)

+0

전에 array_merge를 시도했지만 'Undefined variable : data'오류가 발생합니다. –