使用带有模板继承的最新版本的 Smarty 3 我想在子模板中设置一个变量并在父模板中使用它:
列表.tpl
{extends file="page.tpl"}
{block name="head"}
{$page_var = array("abc", "xyz")}
{/block}
{block name="content"}
<div>...</div>
{/block}
页面.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}
但这直接违背了文档。