我有一个“links.tpl”文件,其中包含许多变量的行,如下面的
{assign var=link_main value="index.php"}
{assign var=link_login value="?a=login"}
但是当我使用{include file="file.tpl"}
在home.tpl中包含此文件时
变量{$link_main}, {$link_login}
不包括在内
我将{assign var=link_main value="index.php"}
放在home.tpl中,但它不起作用,但不是来自包含文件
我尝试将scope=global
添加到变量和父级以包含但没有发生任何事情
我尝试了最后几个小时找到解决方案,感谢任何帮助
答案 0 :(得分:3)
你在做什么应该工作。在我的Mac上测试:
文件test / testInclude.tpl
{assign var='assignedVar' value='foo' scope='global'}
assignedVar in child is {$assignedVar}
<br/>
文件test / 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实例会发生一些非常奇怪的事情。是否可以缓存模板,而在更改变量时不重新生成模板?
显然你应该弄清楚出了什么问题,但如果一切都失败了,你也可以使用替代的capture函数。
答案 1 :(得分:0)
scope='global'
仅适用于smarty 3,而不适用于smarty 2。