2011-06-01 93 views
0

原諒我可能是一個非常愚蠢的問題。我已經研究過這個話題,但是我找不到 有關我的問題的任何相關答案。PHP代碼點火器動態邊欄

我想爲我的網站生成一個動態邊欄。我希望控制器指定加載哪個邊欄 。由於我的大多數頁面都使用相同的模板樣式,因此我創建了模板頁面(頁眉,頁腳,側邊欄),這些頁面通過 包括在模板視圖中。我將所需的邊欄字符串傳遞給模板,然後加載正確的邊欄文件。 到目前爲止,這麼好,或者所以我認爲。

使用這種方法生成一個側邊欄給我留下了一些問題..

1)每個控制器需要通過正確的數據下降到側邊欄。隨着控制器數量的增長,這可能會成爲問題。它似乎是一個邊欄控制器是爲了..但是我讀的所有內容都告訴我,在控制器內調用控制器從 是不好的。

2.)替代似乎是直接從視圖調用模型..再次我理解這打破MVC登錄作爲 處理和邏輯進入視圖..

任何輸入將是巨大的。實施例從一個控制器,模板視圖和電流(不正確地構造的)邊欄代碼..

###### CONTROLLER EXAMPLE 
<?php 

class League extends CI_Controller 
{ 
    public function __construct() 
    { 
     parent::__construct(); 

     $this->data['login_page'] = $this->session->userdata('username') != ""?'logged_in':'login'; 
     $this->data['error'] = $this->uri->segment(3) == "error"?"Username or password incorrect.":""; 

     // Default settings 
     $this->data['sidebar'] = 'sidebar'; 
     $this->data['title'] = 'League'; 
    } 

    /**********************************************************/ 

    public function index() 
    { 
     $this->data['content'] = 'league/index'; 

     $this->data['league_registration'] = $this->league_model->league_list('registration'); 
     $this->load->view('template', $this->data); 
    } 
} 

?> 

-

###### TEMPLATE VIEW EXAMPLE 
<?php $this->load->view('includes/header',$data); ?> 
<div class="left_col"><h2 class="header"><?php echo $title; ?></h2><?php $this->load->view($content); ?></div> 
<?php $this->load->view('includes/'. $sidebar); ?> 
<?php $this->load->view('includes/footer'); ?> 

-

##### EXAMPLE SIDEBAR VIEW --- DONE INCORRECTLY I KNOW 
<?php $match_result  = $this->result_model->latest_match_result(); ?> 
<?php $user_league_result = $this->league_model->user_active_league($this->session->userdata('user_id')); ?> 
<?php $news_result  = $this->news_model->latest_news(5); ?> 
<?php $user_id   = $this->session->userdata('user_id'); ?> 

回答