5

我有一个“links.tpl”文件,其中包含许多变量的行,如下所示

{assign var=link_main value="index.php"}    
{assign var=link_login value="?a=login"}  

但是当我在 home.tpl 中包含这个文件时, 不包含{include file="file.tpl"} 变量 {$link_main}, {$link_login}

我把 {assign var=link_main value="index.php"} 它放在 home.tpl 中,它可以工作,但不是来自包含的文件

我尝试添加scope=global到变量和父项以包含但没有发生任何事情

我尝试了过去几个小时寻找解决方案,感谢任何帮助

4

2 回答 2

4

你在做什么应该工作。在我的 Mac 上测试:

文件 test/testInclude.tpl

{assign var='assignedVar' value='foo' scope='global'}

assignedVar in child is {$assignedVar}

<br/>

文件测试/test.tpl

{include file='test/testInclude.tpl'}

{if isset($assignedVar)}
    assignedVar is set in parent {$assignedVar}
{else}
    assignedVar is not set in parent
{/if}

<br/>

输出

   assignedVar in child is foo 
   assignedVar is set in parent foo 

这真的应该工作 - 如果没有,那么你的 Smarty 实例会发生一些非常奇怪的事情。难道是模板被缓存而不是在变量更改时重新生成?

显然你应该弄清楚出了什么问题,但如果一切都失败了,你也可以使用替代捕获功能。

于 2012-12-11T11:02:23.597 回答
0

scope='global'仅适用于 smarty 3,不适用于 smarty 2。

于 2017-10-11T11:41:59.450 回答