求解renderDynamic不能放到beginCache里面

看代码:

layout/index.php 代码:




<?php if($this->beginCache('mytop',array('duration'=>3600000))){ ?>

<?php $this->renderDynamic('showlogin');?>

<?php $this->endCache();}?>

<?php echo $content;?>



component/controller.php 代码:




<?php

    public $layout='index';

    public function showlogin()

    {

       $this->renderPartial('/user/logininfo');

    }

}

?>

/user/logininfo.php代码


<span>动态内容</span>

运行第一次结果:


<###dynamic-0###><span>动态内容</span>

刷新之后的结果:


<span>动态内容</span><###dynamic-0###><span>动态内容</span>

上面这个问题折磨了我好长一段时间。。

没办法 YII中文文档没有太多支持者 (我也想支持,但是英文很pool)

只好自己看源码:

首先看了缓存文件

内容如下:

经过猜测 应该是beginCache生的缓存内容再经过renderDynamicInternal(‘showlogin’);而这个就是直接把showlogin执行的结果插入到里面 然后就显示出来了。所以问题就在这里。

现在来求解 希望YII的盟友帮帮我 解决

这个动态缓存问题。

你试试用最新svn trunk里的代码。

已经是最新版本的YII了 一直同步这SVN

此问题还一直存在 希望qiang能帮忙

我的main.php 的缓存配置

‘cache’=>array(

‘class’=>‘system.caching.CFileCache’,

‘directoryLevel’=>3

),

renderDynamic指定的callback应该返回要显示的内容,而不是直接echo。

你可以在showlogin()里调用renderPartial($view, null, true)