2011-01-30 64 views
0

最近開始使用Codeigniter,並已通過大部分教程。我想將一個小型的PHP/MySQL網站轉換爲完全在CI框架上運行。該代碼已有四年曆史,以PHP4編寫,並且一塌糊塗。我不介意重寫所有這些。Codeigniter和大圖片

我遇到的問題是找到這個問題的'正確的'解決方案。我希望儘可能保持代碼爲OOP/PHP5,並且儘可能乾淨。該網站有五個六個主要部分安排在DIV中。兩個堆棧形成一箇中心列,一個左邊,一個右邊,一個頭/菜單,以及一個動態填充Fancybox。目前的index.php只是調用header.php,然後繼續到<div class="class1"><include ('box1.php')</div>等等。

我見過的codeigniter示例使用$this->load->view('header')和每個模板文件的頁腳來建立結構。這似乎是一個冗餘和凌亂的方式來處理標題,加載CSS文件等。

什麼是正確的方式來獲取這些控制器和相關視圖加載?如果您願意,可以使用'wrapper'的codeigniter版本。

回答

2

得到一個模板庫,我個人更喜歡使用Colin WilliamsPhil Sturgeons

本質

,你做這樣的事情:(假設 「佈局」 是你的HTML模板)

layout.php中(圖)

<html> 
<head> 
    <title><?=$title;?></title> 
    <?=$metaData;?> 
</head> 
<body> 
    <div id="left"> 
    <?=$leftContent;?> 
    </div> 
    <div id="main"> 
    <?=$main;?> 
    </div> 
</body> 
</html> 

然後在你的控制器:

site.php(控制器)

class Site extends Controller { 

    function __construct() 
    { 
     $this->load->library('template'); 
     $this->template->set_layout('layout'); 
    } 

    function index() 
    { 
     $this->template->write_region('title', 'This is my title'); 
     $data['somedata'] = 'foo' 
     $this->template->write_region('main', 'My content', $data); 
     $this->template->render(); 
    } 
} 

這將輸出到您的模板數據,而無需有負載每次等

我的語法是有點偏離,所以檢查庫特定文檔正確的代碼,但模板庫的方式看待去imo。

+0

我繼續研究這個主題,並將其縮小到使用模板庫,或從另一個視圖腳本調用視圖腳本,這似乎有點愚蠢。謝謝! – 2011-01-30 16:10:58