我有一个基础模板,然后可以构建子模板。
模板端:
<header>
{onload;file={var.flag;if [val]=1;then 'nav.tpl';else ''}}
</header>
<main>
{onload;file={var.templatePath}}
</main>
因此main
标记中填充了子模板,但标头中没有。是说TinyButStrong Error in field {var.flag...}: the key 'flag' does not exist or is not set in VarRef. (VarRef seems refers to $GLOBALS) This message can be cancelled using parameter 'noerr'.
,但实际上它与VarRef
一起存在于templatePath
数组中。
Php侧:
global $templatePath, $flag;
$this->tbs->LoadTemplate($pageTemplateFile);
if(true){$flag = 0;}
$this->tbs->Show();
答案 0 :(得分:1)
在TBS中,默认情况下,[var]字段引用$ GLOBALS(与在本地用«global»声明的变量相同)。
尽管如此,在您的代码段中,加载模板时$ flag的值为NULL,因为它是用«global»声明的,但尚未赋值(加载模板后$ flag = 0)。 因此对于PHP来说:处理[onload]字段时,is_set($ flag)将返回false。
因此,您必须使用[onshow]字段而不是[onload],或者只需在加载前设置$ flag。像这样:
global $templatePath, $flag;
if(true){$flag = 0;}
$this->tbs->LoadTemplate($pageTemplateFile);
$this->tbs->Show();