2012-07-18 9 views
0

컨트롤러에서 다음 코드를 사용합니다. 그러나 데이터 [ 'msg']는 뷰 파일로 전달되지 않습니다.codeigniter보기에서 컨트롤러 데이터에 액세스 할 수 없습니다.

코드 :

operator_success (보기 페이지)이 오류 메시지가 표시로드
class Operator{ 


public function view ($page) 
{ 
    if (! file_exists('application/views/pages/'.$page.'.php')) 
    { 
     // Whoops, we don't have a page for that! 
     show_404(); 
    } 

    $data['title'] = $this->getTitle($page); 
    $this->load->view('templates/header', $data); 
    $this->load->view('pages/'.$page, $data); 
    $this->load->view('templates/footer', $data); 

} 
public function create_company() 
{ 
     // some code 
    $data['msg1']='my mesg'; 
    redirect('operator/view/operator_success','refresh'); 
} 
}; 

: 변수 '$ MSG1를'정의되지 않았습니다.

+0

오타가 있습니다. data [ 'msg1'] = '내 mesg'; => $ data [ 'msg1'] = '내 mesg'; – Mahn

+0

클래스'Operator'에서'$ data'의 범위를 확인하고 싶을 것입니다. 클래스 변수를 사용해야합니다. 또한 Operator는 아마도 CI_Controller를 확장해야합니다. –

+0

세션을 사용하지 않으면 리디렉션을 수행하는 경우에도 데이터가 지속될 수 없습니다. – Mahn

답변

0

리디렉션 한 후이 메시지 중 세션 ("플래시"메시지) 또는 운영자 /보기/operator_success 컨트롤러를 설정해야하므로 변수를 설정 한 후 리디렉션합니다. 대신 변수를 세션 또는 CodeIgniter Flash Data에 보관하도록 설정하십시오.

class Operator 
{ 

    public function view($page) 
    { 
     if (!file_exists('application/views/pages/' . $page . '.php')) { 
      // Whoops, we don't have a page for that! 
      show_404(); 
     } 

     $data['title'] = $this->getTitle($page); 
     $this->load->view('templates/header', $data); 
     $this->load->view('pages/' . $page, $data); 
     $this->load->view('templates/footer', $data); 
    } 

    public function create_company() 
    { 
     // some code 
     $data['msg1'] = 'my mesg'; 

     // DO THIS 
     $this->session->set_flashdata('msg1', 'my mesg'); 
     // OR 
     $this->session->set_userdata('msg1', 'my mesg'); 
     redirect('operator/view/operator_success', 'refresh'); 
    } 

} 

리디렉션 한 후 flashdata를 호출하면됩니다.

사용하기 전에 세션을 초기화해야합니다. 세션 라이브러리를 자동로드하거나 수동으로로드해야합니다.

[1] 자동로드 세션 라이브러리 (설정/autoload.php)

$autoload['libraries'] = array('session'); 

[2] 수동

$this->load->library('session'); 

세션 플래시 데이터 here 자세히 확인할 라이브러리를로드. 희망이 당신을 도와줍니다. 감사!!

+0

저는 CodeIg의 초보자입니다. 세션이 설정되지 않으면 어떻게됩니까? 이것이 새로운 세션을 만들 것입니까? 또는 세션이 이미 설정된 경우에는 무엇을해야합니까? ... 동일한 세션을 사용합니까? – Sarthak

+0

@Sarthak, 대답을 업데이트했습니다. userdata 또는 flashdata를 사용하려면 세션 라이브러리를로드해야합니다. –

1

data['msg1']이 설정 되었기 때문에 페이지가 리디렉션됩니다 (data 어레이는 포함되지 않음).

data을 지속하려면 sessions 또는 cookies 중 하나를 사용해야합니다.

0

당신이 당신이 변수 또는 배열을 사용할 수 없습니다

관련 문제