0

Dwooテンプレートがあります-たとえばbase.html、配列があり$dataます。

{assign '' 'globalVar'} {* $globalVar empty right now *}


{foreach $data element}
    {include '_partial.html'}
{/foreach}

...

<b>{$globalVar}</b>

そしてここに_partial.html

<p>
    {$element.someText}
</p>

{assign "$globalVar $element.someVar" 'globalVar'}

何を得たいですか?すべての部分ファイルで$globalVar、後に使用したいファイルを変更したいと思います{foreach}

そして、ここに重要なことがあります-私はパーシャルをやりたくない{assign}ですbase.html!でのみ_partial.html

部分的なファイルがこの変数を変更するように、参照によって渡すことは可能$globalvarですか?_partial.html

4

2 に答える 2

1

2つのアプローチを取ることができると思いますが、テンプレート自体からそれを行うための本当に良い方法はありません。

最も簡単なのは、$ dwoo-> getを実行する前に変数を作成し、それを参照によって割り当てることです。Dwoo_Dataオブジェクトを使用している場合は、次のようにします。

$globalVar = '';
$data->assignByRef('globalVar', $globalVar);

Dwoo_Dataオブジェクトを使用していない場合は、代わりに次のようにします。

$globalVar = '';
$data['globalVar'] =& $globalVar;

これは基本的に変数を参照として初期化するため、含まれているテンプレートへの参照として渡されます。

次に、部分的なテンプレートで、そのように割り当てることをお勧めします。簡単ですが、それはあなた次第です。

{$globalVar .= $element.someVar}

もう1つのオプションは、データに新しいstdClass()オブジェクトを配置するだけで、次のようにオブジェクトに割り当てることができます。

{$globalObj->stuff .= $element.someVar}

また、オブジェクトであるため、参照によって自動的に渡されるため、問題も解決されます。

そうです、それは実行可能ですが、含まれているテンプレートから親テンプレートにデータを返すことはできないため、テンプレートに入る前に「計画」する必要があります。

お役に立てば幸いです、乾杯

于 2010-01-07T14:47:34.403 に答える
0

実際の解決策は見つかりませんでした-この回避策だけです:

$dwoo.get.variableDwooでは、または$dwoo.post.variableなどを使用してスーパーグローバル変数にアクセスできます。

データを取得したり、設定したりできるので、次の_partial.htmlようにしました。

{$dwoo.env.globalVar "$globalVar $element.someVar"}

私は今それbase.htmlにアクセスすることができます:

{$dwoo.env.globalVar}
于 2010-01-05T12:58:23.480 に答える