2010-10-07 118 views
3

即時通訊嘗試進入codeigniter MVC,但我不知道如何讓我的模板,所以我有2個文件(頁眉和頁腳),然後我可以使我的控制器,然後只把信息放在「內容」分區,所以我包括頂部和頭這樣Codeigniter,如何製作一個模板

<?php 
include("header.php"); 
?> 
<div id="content">My content here</div> 

<?php 
include("footer.php"); 
?> 

一個很好的方式希望你明白我的意思,並能幫助我:)

回答

0

嗯,無不是真的。以下是你應該如何做MVC。

內部控制器,有這樣的事情:

$this->load->view('header'); 
$this->load->view('content'); 
$this->load->view('footer'); 

最後,創建視圖的每個文件(在/系統/應用/視圖文件夾中)

5

最好的辦法是加載您的意見中的意見。

在視圖/ content.php:

<? $this->view('header', array('title'=>'The page title', 'keywords'=>'some keywords', 'etc'=>'...')); ?> 
<div id="content">My content here</div> 
<? $this->view('footer'); ?> 

所以在你的控制器,你這樣做:

$this->load->view('content', $data); 

$data可能含有 '標題' 或 '關鍵字',這將是實現爲如你的控制器:

$data['title'] = 'title'; 
$data['keywords' = 'keywords'; 

而這在你的'內容'視圖:

<? $this->view('header', array('title'=>$title, 'keywords'=>$keywords)); ?> 
<div id="content">My content here</div> 
<? $this->view('footer'); ?> 

這個問題的措辭不同,但幾乎相同,這一個在物質:CodeIgniter or PHP Equivalent of Rails Partials and Templates

+1

內部稱爲「文件名」的文件很好的答案,但不應該是' load-> view('footer'); ?>'而不是' view('footer'); ?>'? – Mischa 2010-10-08 00:46:35

+0

沒有。由於$不再引用Controller,因此您可以使用' view('name'); ?>'但是,你仍然可以使用' load-> view('name'); ?'我不記得具體是什麼美元,但我會研究它。如果你知道的話,隨時歡迎你的加入。 – sholsinger 2010-10-11 20:47:31

+0

所以,當你在視圖中時,'$ this'是'CI_Loader',這是'$ this-> load'在Controller中引用的內容。因此,使用'$ this-> view()'加載另一個視圖(在視圖中)是完全正確的。 – sholsinger 2010-10-11 20:59:36

2

這是我做的。我有一個名爲layout.php中的文件,所有的HTML佈局它和我的裏面,我做的:

$this->load->view($template); 

在你的控制器,你可以這樣做:

$data['template'] = 'filename'; 
$this->load->view('layout', $data); 

喜歡這個會加載<div></div>