###Toknot 模板语法文档
####配置文件, 默认的Toknot\View\Renderer需要如下配置
;模板文件夹路径,相对路径是相对于应用的根目录
templateFileScanPath = View
;编译后的文件保存文件夹,相对路径是相对于应用的根目录
templateCompileFileSavePath = Data/View/Compile
;模板文件扩展名
templateFileExtensionName = html
;开启HTML静态缓存时文件保存目录,相对路径是相对于应用的根目录
htmlStaticCachePath = Data/View/HTML
;开启数据缓存时数据保存目录,相对路径是相对于应用的根目录
dataCachePath = Data/View/Data
;缓存有效时间,单位秒
defaultPrintCacheThreshold = 2
####在控制器的方法中调用模板和申明模板变量如下
class index {
protected static $FMAI = null;
//控制器在被调用时会接收到 FMAI 对象实例
public function __construct(FMAI $FMAI) {
self::$FMAI = $FMAI;
}
public function GET() {
//定义一个模板变量
self::$FMAI->D->newVarName = 'newVarValue';
//或者如下设置一个模板变量
slef::$FMAI->setViewVar('newVarName','newVarValue');
//调用 /your_app/View/index.htm 模板文件
self::$FMAI->display('index');
//调用 /your_app/View/Index/index.htm 模板文件
self::$FMAI->display('Index/index');
}
}
####模板表达式标记:
- 起始标记
{
- 结束标记
}
####Toknot支持下列流程控制结构:
foreach
- 开始标记
{foreach expression}
, 内部表达式expression与PHP foreach 结构一样 - 结束标记
{/foreach}
- 开始标记
if elseif else
- 开始标记
{if expression}
,表达式expression与PHP if结构一样,例如:{if $a=$b}
,{if is_nan($a)}
- 控制结构
{elseif expression}
或者{else}
- 结束标记
{/if}
- 开始标记
inc
包含一个模板,参数与Toknot\Control\FMAI::display()方法一样,不包含扩展名- 单一标记
{inc filename}
,{inc dir/filename}
- 单一标记
func
调用一个函数,这个函数必须是已经定义了的PHP函数,函数的参数必须是已经定义了的模板变量,函数结果会被输出(echo)- 单一标记
{func function($arg)}
- 单一标记
set
定义一个模板变量- 单一标记
{set $var='value'}
- 单一标记
####输出一个变量的值,类似下面:
{$value}
注意模板中的字符串变量其实是 Toknot\Di\StringObject 对象实例
####变量访问数组类型模板变量:
- 字符串类型key:
$array.key
- 数字类型key:
$array[key]
- 字符串类型key,key为变量表示:
$array.$key
注意模板中的数组变量其实是 Toknot\Di\ArrayObject 对象实例
####一个完整的模板例子如下:
{inc header}
<ul class="nav-tree-ul" id="left-nav-tree">
{foreach $navList as $key=>$nav}
<li class="nav-tree-ul-li">
<div class="icon-down-open nav-cat"
{if $nav.action}action="{$nav.action}"{/if}
{if !$nav.hassub}hassub="no"{/if}>{$nav.name}</div>
{if isset($nav.sub)}
<ul class="sub-nav-tree">
{foreach $nav.sub as $sub}
<li class="sub-nav-tree-li" action="{$sub[0]}">{$sub[1]}</li>
{/foreach}
</ul>
{/if}
</li>
{/foreach}
<ul>