Phalcon入門教程之Volt模板引擎

2021-09-23 17:45:45 字數 2197 閱讀 8177

原文發表於: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朋友經常在群裡問這種問題。我們在翻閱...