0

テンプレートの継承で 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}が、それはドキュメントに直接反します。

4

1 に答える 1

0

Template Extension (list.tpl) で $page_var を再定義するのはなぜですか?

代わりに元の $page_var に値を追加しようとしましたか?

だから代わりに

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

あなたができる

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