1

我正在使用 smarty 版本 2.6.26 并根据文档通过使用 {include 'file.tpl' scope='global'} 或 {include 'child_template.tpl' scope=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

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

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

4

2 回答 2

1

抱歉,但您似乎无法在 Smarty2 中执行此操作。我尝试了几种方法,但它不起作用。

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

于 2014-09-05T20:31:01.157 回答
0

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

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

于 2014-09-05T21:46:00.420 回答