0

使用带有模板继承的最新版本的 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}但这直接违背了文档。

4

1 回答 1

0

为什么要在模板扩展 (list.tpl) 中重新定义 $page_var?

您是否尝试过向原始 $page_var 添加值?

所以而不是

$page_var = array("abc", "xyz")

你可以做

array_push($page_var, "abc", "xyz")
于 2012-08-22T12:00:51.643 回答