phalcon-入門篇9(view層基礎使用)
#phalcon-入門篇9(view層基礎使用)#
本教程基於phalcon2.0.9版本
##前言## 先在這裡感謝各位phalcon技術愛好者,我們提供這樣一個優秀的交流平臺
哈嘍大家好呀,期待已久的第9篇終於和大家見面了,時隔半個多月在之間小編對編寫phalcon的語言zephir進行了文件譯文講解以及在忙這工作上的一系列事情所以在這裡給大家道個歉遲來了這麼久,那麼今天的主要類容是簡單的介紹一下基本的view層在phalcon中要如何的運用,話不多說讓我們開始今天的旅程把!
注:筆者水平有限,說的不正確的地方希望大家多多指正,一同交流技術
附上:
喵了個咪的部落格:http://w-blog.cn
教程程式碼庫:http://git.oschina.net/wenzhenxi/Phalcon-tutorial
phalcon官網地址:https://phalconphp.com
phalcon中文社群:http://www.iphalcon.cn/
##1. 分層渲染##
分層渲染顧名思義,就是在把不同層模版結合在一起渲染成一個整體的模版,一個很恰當的例子就是一個公司官網他的標題都是通用的,他的上面的選單欄也是通用的,但是當在寫莫一個模組中的莫一個頁面的時候這些公用的地方還需要重寫嗎,這個答案當然是不,phalcon也很巧妙的考慮到了這一點,我們來看看它的分層渲染機制是怎樣的
###1.1 分層渲染###
按照往常的規範我們建議一個名為ViewController的控制器然後填充程式碼如下:
<?php
use PhalconMvcController;
class ViewController extends Controller {
public function indexAction($Id) {
$this->view->Id = $Id;
}
}
接著我們準備我們的view層的結構:
大家可以看到我們view對應的應該是view/index.phtml,那麼layouts和根目錄的index.phtml是幹嘛的呢?先彆著急我們先給這三個檔案填充一下類容:
view/index.phtml:
<h3>這個是view控制器的index模版!</h3>
<p>這裡有個引數是 <?php echo $Id; ?></p>
layouts/View.phtml**(注意如果要對view模組生效必須同名)**:
<h2>這個是view控制器的佈局檔案!</h2>
<?php echo $this->getContent(); ?>
index.phtml:
<html>
<head>
<title>Example</title>
</head>
<body>
<h1>這個是預設的佈局檔案!</h1>
<?php echo $this->getContent(); ?>
</body>
</html>
然後接著我們來執行一下看看結果如何:
http://phalcon.w-blog.cn/phalcon/View/index/5
從這個地方可以看出渲染程式先進入了index.phtml在index.phtml的程式碼中引入了layouts/View.phtml中的程式碼,然後在layouts/View.phtml中映入了我們控制器中輸出了引數的程式碼,這樣就是一個完整的分層渲染的邏輯了,大家可以好好體會一下!
###1.2 使用模版###
那麼有人問了我要是在view模組中也同樣複用其他模組的layouts咋辦呢,那麼在這裡就有一控制渲染的已經小技巧了
我們在控制器中加入如下程式碼:
public function initialize()
{
$this->view->setTemplateAfter('common');
}
然後在layouts資料夾下面建立common.phtml加入如下程式碼:
<h2>這個是common控制器的佈局檔案!</h2>
<?php echo $this->getContent(); ?>
然後我們在執行
http://phalcon.w-blog.cn/phalcon/View/index/5
我們會發現不僅僅呼叫了layouts中的view.phtml而且也使用了common.phtml
$this->view->setTemplateBefore('common')和$this->view->setTemplateAfter('common')可以控制渲染順序
##2. 選擇檢視##
當我們在做很多專案的時候往往很多頁面是複用的,雖然我們制定了很多不同的Action但是要怎麼通用一個模版呢,phalcon咋這裡提供了一個模版選擇的功能,你可以選擇渲染制定的一個模版
方法如下:
public function indexAction($Id) {
$this->view->pick("Index/index");
$this->view->Id = $Id;
}
這個時候制定了pick之後我們在此請求的內容就變成如下結果了:
##3. 小結##
應為小編並不是特別擅長view層的使用,所以還有部分小編覺得不是太重要的類容並沒有涉及到,有興趣的同學可以參考官方文件,那麼今天的教程就到這裡的多謝大家的關注!
注:筆者能力有限有說的不對的地方希望大家能夠指出,也希望多多交流!
Phalcon技術交流:364520707 PhalCon中文社群:287484785 歡迎大家的加入!