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