原文發表於:phalcon入門教程之volt模板引擎
volt
是phalcon中整合的模板引擎,我們也可以更換為其他模板引擎或同時使用多個模板引擎。本文只介紹phalcon
自帶的volt
模板引擎。
啟用volt
和其他模板引擎一樣,我們需要將volt
模板註冊到views
元件中,並設定模板檔案通用字尾名,或者直接使用標準化的字尾名.phtml
才能正常使用:
$di->setshared('view', function () use ($config, $di) ,
));return $view;
});
用法volt
模板中基本用法、變數、表示式、流程控制等部分的具體用法,文件中已有詳細說明,請直接翻閱phalcon文件
這裡分享一下大家諮詢比較多的幾處用法以及踩過的坑。
控制器指定模板
public function testaction()
變數傳值//控制器中變數
public function test2action()
數值迴圈(for)
phalcon文件 中有提到volt
模板中物件
和關聯陣列
的迴圈方式,但沒有明確例子來說明數值迴圈的用法。具體用法請看如下示例**:
}
連線符
在volt
模板中的連線符不是.
,也不是+
,而是~
,**示例如下:
}
模板繼承
phalcon文件 中有非常詳細的模板的繼承
的用法。這裡和大家分享我在使用模板繼承過程中踩過的乙個坑:
在模板編譯過程中,會報如下錯誤資訊:
#模板繼承中的block塊不能巢狀
embedding blocks into other blocks is not supported
目前官方暫未計畫支援此功能,所以大家在使用模板繼承時,需要特別注意規避block塊巢狀的問題。
擴充套件模板函式
volt
模板中提供了一些常用的基本函式,若想在其中使用自定義函式或php自帶的其他函式,則需要將函式註冊到volt
模板中。
首先,我們定義乙個volt
模板基類,並通過模板編譯器
新增函式:
use \phalcon\mvc\view\engine\volt;
class phalbasevolt extends volt);
}} 其中自定義函式get_userinfo()
的**如下:
class test , 年齡:, ****:";
}} 通過上述**,就已經向模板編譯器中新增了php自帶的explode()
函式和程式中自定義的get_userinfo()
函式。
然後,我們修改di
中註冊的views
物件:
$di -> setshared('view', function() use($config) ,
));return $view;
});至此,explode()
和get_userinfo()
兩個函式就已經註冊在模板中了。那麼,如何呼叫呢?
explode()
在模板中呼叫的示例**:
}
自定義函式get_userinfo()
在模板中呼叫的示例**:
}
不論是php自帶函式,還是程式中自定義的函式,只需按照函式定義時的引數順序傳參即可。
以上**已託管在github:
Phalcon入門教程之模型
原文發表於 phalcon入門教程之模型phalcon提供了四種方式操作mysql資料庫 模型 phql 資料庫抽象層以及原生sql。不論何種方式,首先都需要在di中註冊db服務才能正常使用 di setshared db function use config connection new pha...
Phalcon入門教程之目錄結構
原文發表於 phalcon入門教程之目錄結構很多初學phalcon的朋友,對於以phalcon框架為基礎構建的專案,應該如何組織目錄結構有點摸不著頭腦。比如多模組的專案中,如何共用 libs 類庫和 models 目錄中模型類的情況,就有很多剛接觸phalcon朋友經常在群裡問這種問題。我們在翻閱p...
Phalcon入門教程之目錄結構
原文發表於 phalcon入門教程之目錄結構 很多初學phalcon的朋友,對於以phalcon框架為基礎構建的專案,應該如何組織目錄結構有點摸不著頭腦。比如多模組的專案中,如何共用 libs 類庫和 models 目錄中模型類的情況,就有很多剛接觸phalcon朋友經常在群裡問這種問題。我們在翻閱...