Phalcon入門チュートリアルのVoltテンプレートエンジン
6084 ワード
原文は:Phalcon入門教程のVoltテンプレートエンジン
他のテンプレートエンジンと同様に、
Phalconドキュメントには
Phalconドキュメントには、非常に詳細な
テンプレートのコンパイル中に、次のエラーメッセージが表示されます.
現在、公式にはサポートされていないため、テンプレート継承を使用する際には、blockブロックのネストの問題を回避することに特に注意する必要があります.
カスタム関数
以上のコードにより,PHPが持つ
次に、
これで、
カスタム関数
PHPが関数を持参しても、プログラムでカスタマイズした関数でも、関数定義時のパラメータ順にパラメータを渡すだけです.
上記のコードはgithubに管理されています.https://github.com/KevinJay/m...
最後に、QQグループの交流討論に参加することを歓迎します.広州PHPハイエンド交流群:158587573 Phalconプレイヤーグループ:150237524
volt
はPhalconに統合されたテンプレートエンジンであり、他のテンプレートエンジンに交換したり、複数のテンプレートエンジンを同時に使用したりすることもできます.ここでは、Phalcon
に付属するvolt
テンプレートエンジンについてのみ説明します.Voltの有効化
他のテンプレートエンジンと同様に、
volt
テンプレートをviews
コンポーネントに登録し、テンプレートファイルの汎用接尾辞名を設定するか、標準化された接尾辞名.phtml
を直接使用して正常に使用する必要があります.// :Marser\App\Frontend\FrontendModule.php
$di->setShared('view', function () use ($config, $di) {
$view = new \Phalcon\Mvc\View();
//
$view->setViewsDir(ROOT_PATH . '/app/frontend/views/');
//
$view->registerEngines(array(
//
'.phtml' => function ($view, $di) use ($config) {
$volt = new \Phalcon\Mvc\View\Engine\Volt($view, $di);
$volt->setOptions(array(
//
'compileAlways' => false,
//
'compiledPath' => ROOT_PATH . '/app/cache/compiled/frontend'
));
return $volt;
},
));
return $view;
});
使用法
volt
テンプレートの基本的な使い方、変数、式、フローコントロールなどの部分の具体的な使い方は、ドキュメントに詳しく説明されています.Phalconドキュメントを直接めくって、多くの使い方や踏んだ穴を共有してください.コントローラ指定テンプレート
public function testAction(){
$this->view->pick('view/test');
}
へんすうでんち
//
public function test2Action(){
//setVar:
$this->view->setVar('test', 'hello world');
//setVars:
//$this->view->setVars([
// 'test' => 'hellow world',
//]);
$this->view->pick('view/test2');
}
数値ループ(For)
Phalconドキュメントには
volt
テンプレートにおける
と
のループ方式が記載されているが、数値ループの使い方を説明する明確な例はない.具体的な使い方は、次のサンプルコードを参照してください.{% for i in 0..100 %}
{{i}}
{% endfor %}
コネクタ
volt
テンプレートのコネクタは、.
ではなく、+
ではなく、~
です.コードの例は次のとおりです. {{ url('user/detail?uid='~user['uid']) }}
テンプレートの継承
Phalconドキュメントには、非常に詳細な
の使い方があります.ここでは、テンプレートを使用して継承する過程で踏んだ穴を共有します.
{% block head %}
{% endblock %}
{% block content %}
{% block subContent %}{% endblock %}
{% endblock %}
テンプレートのコンパイル中に、次のエラーメッセージが表示されます.
# block
Embedding blocks into other blocks is not supported
現在、公式にはサポートされていないため、テンプレート継承を使用する際には、blockブロックのネストの問題を回避することに特に注意する必要があります.
拡張テンプレート関数
volt
テンプレートには、カスタム関数またはPHPに付属する他の関数を使用するには、volt
テンプレートに関数を登録する必要がある一般的な基本関数がいくつか用意されています.まず、volt
テンプレートベースクラスを定義し、
で関数を追加します.// :Marser\App\Core\PhalBaseVolt.php
use \Phalcon\Mvc\View\Engine\Volt;
class PhalBaseVolt extends Volt{
/**
*
*/
public function initFunction(){
$compiler = $this->getCompiler();
// PHP explode
$compiler -> addFunction('explode', 'explode');
// get_userinfo
//$resolvedArgs ,
// , return string , , (::)
$compiler -> addFunction('get_userinfo', function($resolvedArgs, $exprArgs) use ($compiler){
return '\Marser\App\Libs\Test::get_userinfo(' . $resolvedArgs . ')';
});
}
}
カスタム関数
get_userinfo()
のコードは次のとおりです.// :Marser\App\Libs\Test.php
class Test {
public function get_userinfo($username, $age, $mobile){
return " :{$username}, :{$age}, :{$mobile}";
}
}
以上のコードにより,PHPが持つ
explode()
関数とプログラムでカスタマイズしたget_userinfo()
関数をテンプレートコンパイラに追加した.次に、
DI
に登録されているviews
オブジェクトを変更します. // :Marser\App\Frontend\FrontendModule.php
$di -> setShared('view', function() use($config) {
$view = new \Phalcon\Mvc\View();
#
$view -> setViewsDir(ROOT_PATH . '/app/frontend/views/');
#
$view -> registerEngines(array(
#
'.phtml' => function($view, $di) use($config) {
# volt
$volt = new \Marser\App\Core\PhalBaseVolt($view, $di);
#
$volt -> setOptions(array(
#
'compileAlways' => false,
#
'compiledPath' => ROOT_PATH . '/app/cache/compiled/frontend'
));
# ! ---
$volt -> initFunction();
return $volt;
},
));
return $view;
});
これで、
explode()
とget_userinfo()
の2つの関数がテンプレートに登録されました.では、どのように呼び出しますか?explode()
テンプレートで呼び出されたサンプルコード:{% set introArray = explode('-', intro) %}
{% for value in introArray %}
{{value}}
{% endfor %}
カスタム関数
get_userinfo()
がテンプレートで呼び出すコードの例: {{get_userinfo('admin', '20', ' ')}}
PHPが関数を持参しても、プログラムでカスタマイズした関数でも、関数定義時のパラメータ順にパラメータを渡すだけです.
上記のコードはgithubに管理されています.https://github.com/KevinJay/m...
最後に、QQグループの交流討論に参加することを歓迎します.