淺析ThinkPHP的模板輸出功能_PHP教程

來源:互聯網
上載者:User
ThinkPHP中的每一個xxxAction.class.php檔案就代表著一個應用模組,這個Action中的每一個方法(function)代表著一個操作,操作可以分為有輸出到模板的操作和只具執行不需要輸出的操作。
開啟Myapp/Lib/Action/IndexAction.class.php檔案,我們可以看到裡面的基礎代碼:

class IndexAction extends Action{public function index(){}}

對此,需要指出一下幾點:

1.在ThinkPHP的開發中,要增加一個應用模組,就要在Action檔案夾裡建立一個類,類的檔案命名格式是“模組名稱+Action.class.php”。例如我們這裡的應用模組是Index,所以定義檔案名稱為IndexAction.class.php。
2.應用模組類的定義要繼承架構的Action類。要為這個應用模組添加一個操作,則定義一個以此操作為命名的function.例如上面的index操作。

通常一個應用模組中,會有若干操作(function)需要有與使用者互動的頁面,這就需要用到模板輸出,ThinkPHP本身已內建了一套具有ThinkPHP特色的,很強大易擴充但應用非常方便兼簡單的模板引擎。
在應有模組中,如果某個操作是需要頁面顯示的,只要對應在Myapp/Tpl/default/裡建立一個檔案夾,檔案夾以應用模組的名稱來命名,然後在這個檔案夾下,建立一個以這個function名稱來命名的html檔案,就可以在這個方法中使用$this->display()方法來直接調用該模板。(當然也可以調用其它模組下的其它模板或顯式指定模板檔案位置和名稱,由於是循序漸進式的學習,就讓我們先忽略吧)瞭解這些理論後,我們先簡單實操一下這些知識。
(1)在Myapp/Tpl/default/下建立一個檔案夾,根據應用模組的名稱,我們將這個檔案夾命名為Index
(2)在Myapp/Tpl/default/Index/下建立一個html檔案,根據操作名稱,我們命名該檔案為index.html
(3)開啟Myapp/Lib/Action/IndexAction.class.php檔案,修改代碼為

<?phpclass IndexAction extends Action{public function index(){$value =  'hello,ThinkPHP';$this->assign('name',$value);$this->display();}}?>

(摘自手冊:ThinkPHP模板指南,此後的知識要點均來自ThinkPHP官方手冊,不再申明)
在Action類裡面使用 assign方法對模板變數賦值,無論何種變數類型都統一使用assign賦值。

$this->assign('name',$value);

// 下面的寫法是等效的

$this->name = $value ;

// 模板變數賦值後就需要調用模板檔案來輸出相關的變數,模板調用通過display方法來實現

$this->display();


4 開啟Myapp/Tpl/default/Index/index.html檔案,代碼為

{$name}測試輸出: {$name}

此處注意:模板變數使用{$變數名稱}這種標籤進行輸出。

不同的模板變數類型,使用不同的標籤,標籤可以自行另外定義,暫且不理會。

5 開啟瀏覽器輸入地址:,我們可以看到,定義的模板變數已經輸出來了。

附加補充知識:

1 如果要同時輸出多個模板變數,可以使用下面的方式:

$array = array();$array['name']  =  'thinkphp';$array['email']  =  '123456@vip.qq.com';$array['phone']  =  '123456';$this->assign($array);

這樣,就可以在模板檔案中同時輸出name、email和phone三個變數。

2 我們使用上面的變數定義,將整個數組定義為一個模板變數來輸出

$array = array();$array['name']  =  'thinkphp';$array['email']  =  '123456@vip.qq.com';$array['phone']  =  '123456';$this->assign('array',$array);$this->display();

在html中,要輸出$array['name']的值,代碼是
{$array.name} 或 {$array['name']}

3 將這個數組迴圈輸出

(1) IndexAction.class.php中代碼更改如下

<?phpclass IndexAction extends Action{public function index(){$array = array();$array['name']  =  'thinkphp';$array['email']  =  '123456@vip.qq.com;$array['phone']  =  '123456';$value =  'hello,ThinkPHP';$this->assign('array',$array);$this->assign('name',$value);$this->display();}}?>

(2) 將Myapp/Tpl/default/Index/index.html代碼更改如下:

{$name}{$vo}

注意:name='array'是指要迴圈的模板變數是array,id='vo'是指這個資料在模板輸出時所使用的名稱

http://www.bkjia.com/PHPjc/824675.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/824675.htmlTechArticleThinkPHP中的每一個xxxAction.class.php檔案就代表著一個應用模組,這個Action中的每一個方法(function)代表著一個操作,操作可以分為有輸出到模板...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.