2012-01-28 4 views
1

컨트롤러 이름 page.php으로 작업하고 있습니다. 위와 같이CodeIgniter에서 컨트롤러를 수동으로로드하는 방법은 무엇입니까?

class Page extends CI_Controller { 

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

    public function index() { 
     show_404(); 
    } 

    public function view($id) { 
     $query = $this->db->query(" 
      SELECT * FROM proposals 
      WHERE id='$id'"); 

     if ($query->num_rows() == 1) { 
      $row = $query->row(); 
      $data['proposal_id']   = $id; 
      $data['proposal_title']  = $row->title; 
      $data['proposal_proposer'] = $row->proposer; 
      $data['proposal_summary']  = $row->summary; 
      $data['proposal_description'] = $row->description; 
      $data['proposal_date']  = $row->date; 
      $data['proposal_vote']  = $row->vote; 
      $data['proposal_source']  = $row->source; 
      $query->free_result(); 
     } else { 
      show_404(); 
     } 

     // Get user data 
     $user_info['logged_in'] = ""; 
     $user_info['username'] = ""; 
     $user_info['user_id'] = ""; 
     $user_info['score']  = ""; 

     // Get special variables needed for the header 
     $header_data['page_title']  = htmlspecialchars($data['proposal_title']); 
     $header_data['page_description'] = htmlspecialchars($data['proposal_summary']); 

     // Get special variables needed for the footer 
     $footer_data['stats_proposals'] = "12"; 
     $footer_data['stats_users']  = "42"; 

     // Check if this is an edit 


     // Load the views (interfaces) in order 
     $this->load->view('templates/header', $header_data); 
     $this->load->view('page',    $data); 
     $this->load->view('templates/footer', $footer_data); 
    } 
} 

, 내가 수동으로 $this->load->view('templates/header', $header_data);를 사용하여 헤더를 호출하고 여기에 약간의 정보를 전달하고이 내가 가진 것입니다. 그러나 필자의 경우이 정보는 사이트 전체에서 항상 동일합니다. 헤더에 대한 뷰를로드하기 전에 일종의 컨트롤러를 호출하는 방법이 있습니까?

답변

3

라이브러리 & 모델을 만들어 모든 DB 쿼리를 완료 할 수 있습니다. 또한 $query = $this->db->query() 비트가 정리되어 컨트롤러가 아닌 모델에있게됩니다.

그런 다음 헤더보기를로드 할 때마다, 당신은 컨트롤러에서 이것을 사용할 수 있습니다

$header_data = $this->library_name->function_to_get_header_info($id); 
$this->load->view('templates/header', $header_data); 

이 헤더보기를 만드는 데 필요한 변수를 받아들이 실제 라이브러리 (예를 들어, $id) . 모델에 대한 호출을 수행하여 실제 DB 쿼리 (예 : $query = $this->db->query("SELECT * FROM proposals WHERE id='$id'");)를 수행합니다. 그런 다음 라이브러리는 모델에서 반환 한 데이터를 뷰에서 사용할 수있게 만듭니다 (예 : page_title & page_description부터 $row->title & $row->summary).

관련 문제