#基於PhalApi的Smarty拓展php
##前言## 先在這裏感謝phalapi框架創始人@dogstar,爲咱們提供了這樣一個優秀的開源框架.css
用過的童鞋都知道PhalApi是一個Api框架不提供view層的功能,可是不少童鞋有開發一個本身管理本身API的web界面的需求,或者是我的後臺,那麼是否意味着要去在學習另一種框架來實現呢?固然不是在以前也有童鞋放出過一個View拓展,使用以後仍是有一些不方便的地方,因此引入一個比較老牌的PHP模版引擎Smarty來解決這類問題,本拓展提供了對Smarty的封裝,並且Smarty內容比較多在此處不會依依交與你們使用,但願的童鞋能夠本身探索關於Smarty的功能,有不便之處須要封裝與之聯繫!git
注:本拓展並無開發完成,也沒進行嚴格的測試,此版本爲還處於開發階段的鑑賞版.web
附上:api
官網地址:http://www.phalapi.net/數組
開源中國Git地址:http://git.oschina.net/dogstar/PhalApi/tree/release框架
PhalApi Library:http://git.oschina.net/dogstar/PhalApi-Library函數
##初始化Smartyoop
PhalApi-Smarty的初始化也和其餘拓展同樣,咱們只須要把上方PhalApi Library中的Smarty文件目錄放到須要用到的項目的拓展中便可.學習
可是view拓展和其餘拓展有一些本質的區別就是須要有存放view頁面的地方,這裏使用一個乾淨的PhalApi項目進行演示,咱們在public下建立以下結構
而後咱們在init末尾中加入以下代碼:
//接受一個參數,參數爲view的路徑 DI()->smarty = new Smarty_Lite('view');
如今咱們就已經初始化好了PhalApi-Smarty
##一個簡單的例子
咱們在Default.Index接口中作以下修改:
public function index() { $param = array( 'name' => '喵咪', 'list' => array( array( "id" => 1, "name" => "test" ), array( "id" => 2, "name" => "test2" ) ) ); DI()->smarty->setParams($param); DI()->smarty->show(); }
同時修改index.tpl:
<HTML> <HEAD> <style type="text/css"> p,table{ margin: auto; width: 60%; } </style> </HEAD> <BODY> Hello {$name}, welcome to smarty<br/> <table border="1"> {section name = sec loop = $list} <tr> <td>{$list[sec].id}</td> <td>{$list[sec].name}</td> </tr> {/section} </table> </BODY> </HTML>
此時咱們再次運行Default.Index接口就有以下顯示:
setParams函數做爲參數的媒介把接口中獲取的參數放到模版裏面進行處理,接受一個數組具體實現是對每個參數進行assign操做,具體能夠參考Smarty
咱們在show默認不傳遞參數是,會更具模塊名和接口名來匹配對於的模版,好比Default.Index就會匹配到view/Default/Index.tpl,固然咱們也能夠指定跳轉到摸個模版,好比建立一個模版名稱爲test.tpl,而後建立一個Default.test接口,咱們在index接口進行一些修改
DI()->smarty->show("Default.test");
這個時候咱們訪問Default.Index接口的時候就會先執行Default.Index的代碼而後在執行,test方法的代碼最好渲染Default中的test.tpl模版
注意:show跳轉其餘模塊接口會執行跳轉的接口,若是有參數驗證會被攔截,因此使用場景比較適合處理用戶登陸過期跳轉登陸頁面從新登陸這類業務
##其餘
若是你們在使用IDE開發的時候嫌DI->smarty沒有提示的話能夠在以下目錄加入此註釋
\PhalApi\PhalApi\DI.php
這樣就能夠看到以下效果
##總結
當前只是提供了一個簡單的封裝還有不少須要優化封裝的功能其餘各位小夥伴的補充.