TinyButStrong:TBS对象访问一个全局变量,但不能访问另一个

时间:2018-07-04 00:42:29

标签: php tinybutstrong

我有一个基础模板,然后可以构建子模板。

模板端:

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

1 个答案:

答案 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();