将(全局)变量从一个智能模板传递到另一个模板

时间:2014-09-05 18:11:33

标签: php templates smarty smarty2

我使用的是智能版本2.6.26,并根据文档使用{include'file.tpl'scope ='global'}或{include'child_template.tpl'cope = parent},应该可以访问子模板中包含的变量,并在父模板中使用它们。

作为一个例子,我的子模板中有如下代码:

  {capture assign="project_variable" name=project_data scope="global"}
  my text data here...
  {/capture}

变量{$ project_data}现在可在此模板中使用

在我使用的父(仪表板)模板中:

 {include 'child_template.tpl' scope=global}

但如果我尝试在父模板中使用{$ project_data},则会显示为空白。 所以看起来子模板中的变量集只是本地的?

根据以下文件: http://www.smarty.net/docs/en/language.function.include.tpl

“您可以使用包含模板中包含模板的所有变量”。

我在这里想念的是什么? 提前感谢您的任何见解。

2 个答案:

答案 0 :(得分:1)

抱歉,但似乎你不能在Smarty2中这样做。我尝试了几种方法,但它不起作用。

Smarty3中没有scope属性。您查看了Smarty3的文档,您应该查看documentation for Smarty2

答案 1 :(得分:0)

我假设使用{include file ='mytemplate.tpl'}会找到“文件” 但是直到我使用完整的绝对路径,例如: {include file ='/ home / username / public_html / mysite / custom_template.tpl} 并使用以下格式获取变量:{$ smarty.capture.myvariable_name} 所以我回答了我自己的问题,但是Marcin让我走上正轨,所以非常感谢!

我说得太早了。看起来我只能捕获静态文本而不是“{foreach}”循环 任何想法非常感谢