【问题标题】:Include a tpl file with variables (Smarty)包含一个带变量的 tpl 文件 (Smarty)
【发布时间】:2012-11-28 16:25:18
【问题描述】:

我有一个“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 添加到要包含的变量和父级中,但没有任何反应

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

【问题讨论】:

  • 您可以添加您正在使用的 smarty 版本吗?我很确定您尝试的方法适用于 Smarty-3.1.2
  • 这是一个错字“我有一个“links.tpl” ....使用 {include file="file.tpl"}" 吗?
  • 是的,对不起,links.tpl 在我的文件中没问题,版本也是@version 2.6.2

标签: smarty


【解决方案1】:

你正在做的应该工作。在我的 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 函数。

【讨论】:

  • 谢谢你,先生,但这没有用,他们俩都没有,我想做的是有一个 file.tpl 将所有链接作为变量,这样我就可以更改所有设计链接从这个 tpl 文件中,因为我的脚本是 zended,第二种方法不适合这个需要:(再次感谢先生
  • 感谢您的回复,感谢您的帮助,我的意思是:文件 test/testInclude.tpl > {assign var='assignedVar' value='This is an included assignedVar'} 和文件 test/test.tpl > {include file='test/testInclude.tpl'} assignedVar is {$assignedVar} 当我运行 test.tpl 时,分配的 var 为空,你做了相反的事情
  • 我认为使用每个页面的变量仅限于该页面,我不确定因为脚本是 zend 并且我无法阅读它,但这是唯一的可能性,非常感谢您的帮助,祝你一切顺利
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-23
    • 1970-01-01
    • 1970-01-01
    • 2016-12-12
    • 1970-01-01
    • 1970-01-01
    • 2015-08-15
    • 1970-01-01
    相关资源
    最近更新 更多