TinyButStrong: объект TBS обращается к одной глобальной переменной, но не к другой

У меня есть базовый шаблон, который затем создает суб-шаблоны.

Сторона шаблона:

    <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 Side:

global $templatePath, $flag;
$this->tbs->LoadTemplate($pageTemplateFile);
if(true){$flag = 0;}
$this->tbs->Show();

0

Решение

По умолчанию в TBS поля [var] ссылаются на $ GLOBALS (что аналогично переменным, локально объявленным с помощью «global»).

Тем не менее, в вашем фрагменте значение $ flag равно NULL, когда шаблон загружен, потому что он объявлен с «global», но ему еще не присвоено значение ($ flag = 0 назначается после загрузки шаблона).
Поэтому для PHP: is_set ($ flag) вернет false при обработке полей [onload].

Поэтому вы должны использовать поля [onshow] вместо [onload] или просто установить $ flag перед загрузкой. Как это :

global $templatePath, $flag;
if(true){$flag = 0;}
$this->tbs->LoadTemplate($pageTemplateFile);
$this->tbs->Show();
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]