[已解决]使用Dynamic Content时问题

我在视图文件中这样写的代码:

if ( $this->beginCache( 'q23', array('duration'=>60) ) ) {

    $this->renderDynamic('getDBOneTable');

    $this->endCache();

}

第一次时页面输出一次结果:内容为:

<###dynamic-0###>1

2

2

2

23

3

5

5

在在

第二次时页面中输出两次结果。

内容为:

1

2

2

2

23

3

5

5

在在

<###dynamic-0###>1

2

2

2

23

3

5

5

在在

getDBOneTable是controller中的一个public方法,输出表中记录。

代码如下:

public function getDBOneTable() {

$a = TestDataMemCache::model()-&gt;findAll();


foreach ($a as $<img src='http://www.yiiframework.com/ipb/public/style_emoticons/default/cool.gif' class='bbc_emoticon' alt='B)' /> {


	echo $b-&gt;values.&#039;&lt;br/&gt;&#039;;


}

}

不知何原因?还请指教。

另:我在CController.php文件中的方法renderDynamic中看到有一行代码,不知是不是调试代码:echo "<###dynamic-$n###>".

如果说错,还请见谅!

你能试试把geDbOneTable改成time么?

另外相关的view代码是怎么样的?你有没有启用什么filter?

[size=4]1.有没有启用什么filter?[/size]

  我针对另一action使用了filter

public function filters()

{

return array(


	/**


	&nbsp;  * 针对页面缓存的设置


	 */


	array(


		&#039;system.web.widgets.COutputCache + Page&#039;,


		&#039;duration&#039; =&gt; 60,


		&#039;varyByParam&#039; =&gt; array(&#039;id&#039;),


	),


);

}

[size=4]2.相关的view代码是怎么样的[/size]

<?php

//应用头信息

$this->widget('application.components.TitleApplication',array(

&#039;title&#039;=&gt;&#039;MemCache数据库单表记录缓存示例&#039;,

));

?>

<div class="content_left">

&lt;!--应用自己的导航开始--&gt;


&lt;?php 


//应用菜单


$this-&gt;widget(&#039;application.components.MenuCache&#039;); 


?&gt;


	&lt;!--应用自己的导航结束--&gt;


	&lt;div class=&quot;mt10 f16&quot;&gt;


	&lt;p&gt;


		此页面应用了页面缓存,缓存时间为60秒,&lt;br/&gt;


		为了演示效果,通过两种方式操作:1.更改layout中的文字,查看缓存是否生效,2.更改本页代码,查看是否生效&lt;br/&gt;&lt;br/&gt;


		&lt;?php 


			


			$cacheId = &#039;varFirst&#039;;


			echo &quot;缓存ID为:$cacheId&lt;br/&gt;&quot;;


			echo &quot;缓存内容为:&lt;br/&gt;&quot;;


			if ( $this-&gt;beginCache( &#039;q23&#039;, array(&#039;duration&#039;=&gt;60) ) ) { 


				$this-&gt;renderDynamic(&#039;getDBOneTable&#039;);


				$this-&gt;endCache();


			}


		?&gt;


	&lt;/p&gt;


	&lt;/div&gt;

</div>

如把视图中的$this->renderDynamic('getDBOneTable');改成$this->renderDynamic('time');时,显示内容:

1243822337[color=red]1//这个1是记录中的数据[/color]

2

2

2

23

3

5

5

但如果把controller中的方法getDBOneTable也改成time,那现象与我发的原贴效果一致。

你用的是哪个版本?

我以为更新到了1.0.5版本,但我查了一下原来一直用的是1.0.4.

我今天重新下载了1.0.5,这回正常了,没有上边的现象了。

非常感谢!!