CI 묻고 답하기

제목 도와주세요!!!ㅠ.ㅠ
글쓴이 꼬마호랭이 작성시각 2013/01/15 19:32:07
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 17526   RSS

부모 컨트롤러 하나에 아이 컨트롤러 2개를 놓고 데이터를 쉐어할려고 하는데 안되네요..

이게 부모 컨트롤러고...

 

class MY_Data extends CI_Controller
{
public $layout;
public $xe_member;
public $member_srl;
public $is_logged_in = FALSE;
public $is_registerd = false;
public $director = array();
public $fighters = array();
public $logged;

function __construct()
{
    parent::__construct();
    $this->load->model('member_login');
    $this->load->model('db_log');
    $this->layout = 'include/template';
}
function load_data()
{
    $this->xe_member = $this->member_login->member_check();
    $this->member_srl = $this->xe_member['member_srl'];
    $this->is_logged_in = $this->xe_member['is_logged'];
    $this->is_registerd = $this->member_login->register_check($this->member_srl);

    if($this->is_registerd)
    {
        $this->director = $this->db->where('member_srl', $this->member_srl)->limit(1)->get('fc_directors')->row();
        $this->fighters = $this->db->where('member_srl', $this->member_srl)->get('fc_fighters')->result();
    }
}

요 아래 두개가 아이 컨트롤러들인데...

 

<?php
class Login extends MY_Data
{
 public function __construct()
 {

  parent::__construct();
  $this->load->model('member_login');
 }

 public function index()
 {
  if (isset($_COOKIE['PHPSESSID'])) {

   $data['PHPSESSID'] = $_COOKIE['PHPSESSID'];

  }else {
   $this->load->view('include/template', 'login_error'); die();

   $this->load_data();
   if($this->is_logged_in)
   {
    if ($this->is_registerd)
    {

     $data['log'] = $this->db_log->read_all_log(); $data['main_contents'] ='main/main'; $this->load->view('include/template', $data);
    }
    else {
     redirect('registration');
    }
   }
    else { 
     $data['main_contents'] ='login_error'; $this->load->view('include/template', $data);
    
    }
   }


   ?>


 

그리고..

 

<?php

class Main extends MY_Data
{

 function __construct() {
  parent::__construct();
 }
 function index(){


  if(!$this->logged)     {
   $data['main_contents'] = 'login/login_button';
   $this->load->view($this->layout,$data);
  }
  else
  {
   $data['main_contents'] = 'main/main';
   $this->load->view($this->layout,$data);
  }
 }
}


 

먼저 메인으로 접속해서 logged 오브젝트가 false면 login으로 넘어가 로그인 처리를 하고 데이터를 마더 컨트롤러 DB_Data 오브젝트에 저장 시키고 메인에서 불러와 쓴다... 가 컨셉인데...

로그인쪽에서는 제대로 저장되어 있는 오브젝트가 메인에서는 NULL값만 내뱉네요...

제가 잘못 만든건가요? 아니면...

조언 부탁 드립니다...

 다음글 코드이그나이트를 처음 접합니다 강좌들이 다들 구버젼인듯... (2)
 이전글 CI 자동 로그인 세션 관련 질문입니다(검색 해본 후 ... (3)

댓글

몽구스 / 2013/01/16 13:49:35 / 추천 0
지금 올리신 코드 구조가 좀 의아한데  


application/core/MY_Controller.php
파일 안에다가 부모 컨트롤러 (My_data )  넣으시고요.
My_data에서 Load하면 될겁니다. 
http://ellislab.com/codeigniter/user-guide/general/core_classes.html
http://stackoverflow.com/questions/8004385/codeigniter-my-controller-is-it-only-possible-to-extend-core-once




지훈임돠 / 2013/01/17 16:46:31 / 추천 0
CI 구조상 모든 콘트롤러가 메모리상에 올라오는게 아니라서 상속이 안될수도 있다는 생각이 드네요~

라이브러리로 구현해보는건 어떨까요? ㅎㅎ