0

我有一个基本模板,然后构建子模板。

模板方面:

    <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();
4

1 回答 1

1

默认情况下,在 TBS 中,[var] 字段引用 $GLOBALS(与用 « global » 本地声明的变量相同)。

尽管如此,在您的代码段中,加载模板时 $flag 的值为 NULL,因为它是用 «global » 声明的,但尚未为其分配任何值(在加载模板后分配 $flag = 0)。所以对于 PHP:is_set($flag) 将在处理 [onload] 字段时返回 false。

所以你必须使用 [onshow] 字段而不是 [onload],或者在加载之前简单地设置 $flag。像这样 :

global $templatePath, $flag;
if(true){$flag = 0;}
$this->tbs->LoadTemplate($pageTemplateFile);
$this->tbs->Show();
于 2018-07-05T01:55:24.710 回答