0

単一の配列を繰り返し処理し、一部の要素に対してのみキャッシュを無効にしたい。だから私の考えは、nocacheセクションでkey要素を保持して取得することでした。key残念ながら、私は次の可能性を見つけていません:

$rec@keynocacheセクションにキャッシュされた割り当て、

keyまたはキャッシュされたセクションに変数定義を保持します。

それを行う方法はありますか (スマートなコード変更なし)。ここに私のtest.tpl:

{foreach $array as $rec}
  {if $rec.dynamic}
    {assign var="key" value=$rec@key} 
    {nocache}
      {$array[$key].text}
    {/nocache}  
  {else}
    {$rec.text}
  {/if}
{/foreach}

およびtest.php:

<?php 
include_once 'libs/Smarty.class.php';
$smarty=new smarty();
$smarty->caching=1;
$smarty->assign('array',array(
            'r1'=>array('dynamic'=>true,'text'=>'dynamic'),
            'r2'=>array('dynamic'=>false,'text'=>'static')
          ));
$smarty->display('test.tpl');

(もちろん、テキスト表示よりもはるかに複雑なことに使用します:))私は多くのトリックを試しましたが、自分では不可能だと思います。間違っていることを教えてください:)

4

2 に答える 2

0

あなたが達成しようとしていることは、Smarty 3.1.x の時点では不可能です。Smarty 3.2 では、値を {nocache} セクションに「エクスポート」して、テンプレートが再実行されたときに確実に使用できるようにします。

3.2 がリリースされるまで (日付は聞かないでください。わかりません)、コンパイラ関数を使用して自分でこれを行うことができるかもしれません。

于 2012-03-03T12:02:16.783 に答える