使用最新版本的Smarty 3和模板继承我想在子模板中设置一个变量并在父模板中使用它:
list.tpl
{extends file="page.tpl"}
{block name="head"}
{$page_var = array("abc", "xyz")}
{/block}
{block name="content"}
<div>...</div>
{/block}
page.tpl
<!DOCTYPE html>
<html>
<head>
{block name="head"}
{$page_var = array()}
{/block}
{mytemplatefunc foo=array("bar") + $page_var}
...
主页面模板初始化变量,子页面根据需要设置变量。然后,主页面模板在调用模板函数时将使用该变量。但是$page_var
总是空的。 就像模板变量的范围始终是本地的一样。回到{include}
唯一的解决方案吗?
我已尝试{assign scope='global'}
和{assign scope='parent'}
,即使它们是用于包含的。我也尝试使用自己的静态类方法和变量(挂起值)但它永远不会工作。在其他地方,有人建议尝试使用{block}
之外的变量,但这直接反对文档。
答案 0 :(得分:0)
为什么要在Template Extension(list.tpl)中重新定义$ page_var?
您是否尝试过将值添加到原来的$ page_var?
所以而不是
$page_var = array("abc", "xyz")
你可以做到
array_push($page_var, "abc", "xyz")