没翻页的时候renderDynamic的内容显示正常,翻页后renderDynamic的内容就被输出两次。我已经在本机和服务器上调试过多次。都是这样的情况。
我是用Yii的demo blog做的测试仅仅修改了三个地方,使用了页面缓存。测试的地址是:http://kina.tk/demo/ 点翻页,多点几次就可以看到UserMenu被重复输出在翻页按钮下面了。
另外,我只修改了demo blog的三个地方:
layouts column2.php
<?php if(!Yii::app()->user->isGuest) $this->widget('UserMenu'); ?>
改
<?php $this->renderDynamic('widget', 'UserMenu', array(), true); ?>
config main.php
加
'cache'=>array(
'class'=>'CDbCache',
),
controllers PostController.php
加
public function filters()
{
return array(
'accessControl', // perform access control for CRUD operations
array(
'system.web.widgets.COutputCache + index,view',
'duration'=>60,
'varyByRoute'=>true,
'varyByParam'=>array('id','Post_page','tag'),
),
);
}
其他的地方都没有动。
另外抓到翻页后的源代码发现多输出的一次被输出到翻页按钮和</div><!-- content -->之间了,也就是说在<div id="content"></div>的里面,奇怪了为什么不是两次输出都在<div id="sidebar"></div>里面。
而且renderDynamic放在<?php $this->beginContent(’/layouts/main’); ?>和<?php $this->endContent(); ?>外面就不会输出两次了(但renderDynamic的内容实际上是这里面的)。
调试了一下午,没找到是哪里的原因,是不是动态内容和layout冲突了?还是动态内容的实现有bug?