#phalcon-入門篇9(view層基礎使用)#php
本教程基於phalcon2.0.9版本html
##前言## 先在這裏感謝各位phalcon技術愛好者,咱們提供這樣一個優秀的交流平臺git
哈嘍你們好呀,期待已久的第9篇終於和你們見面了,時隔半個多月在之間小編對編寫phalcon的語言zephir進行了文檔譯文講解以及在忙這工做上的一系列事情因此在這裏給你們道個歉遲來了這麼久,那麼今天的主要類容是簡單的介紹一下基本的view層在phalcon中要如何的運用,話很少說讓咱們開始今天的旅程把!佈局
注:筆者水平有限,說的不正確的地方但願你們多多指正,一同交流技術this
附上:.net
喵了個咪的博客:http://w-blog.cncode
教程代碼庫:http://git.oschina.net/wenzhenxi/Phalcon-tutorialhtm
phalcon官網地址:https://phalconphp.comblog
phalcon中文社區:http://www.iphalcon.cn/教程
##1. 分層渲染##
分層渲染顧名思義,就是在把不一樣層模版結合在一塊兒渲染成一個總體的模版,一個很恰當的例子就是一個公司官網他的標題都是通用的,他的上面的菜單欄也是通用的,可是當在寫莫一個模塊中的莫一個頁面的時候這些公用的地方還須要重寫嗎,這個答案固然是不,phalcon也很巧妙的考慮到了這一點,咱們來看看它的分層渲染機制是怎樣的
###1.1 分層渲染###
按照往常的規範咱們建議一個名爲ViewController的控制器而後填充代碼以下:
<?php use Phalcon\Mvc\Controller; 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 歡迎你們的加入!