Yii:如何在CGridView列表控件使用了Ajax方式更新数据的情况下返回前一个页面

Yii框架提供的CGridView用来展示表格数据,具有较好的过滤/排序/分页功能。

但是你可能会遇到下面这样的问题:

如果存在多页文章数据,在CGridView界面上浏览到后面的文章页,然后查看某个文章的信息,

这个时候再回退的时候,总是返回到列表的第一页,而不是刚才的历史页面。


解决方法有两个:

1个是禁用ajax效果,设置CGridView ajaxUpdate属性为false; 这个不是我想要的,因为牺牲了性能。

第2个方法是升级到Yii的高版本,>=1.1.12, 提供了一个enableHistory功能,

把列表视图(List.php)中把该CGridView的enableHistory属性设置为true, 再进行页面操作时,你会发现浏览器中的URL是带了ajax参数的完整请求。

然后在查看视图(View.php)中使用如下的语句达到返回历史页面的效果:

	<div class="Action">
	    <?php echo XHtml::link(Yii::t('Trade','Back'), Yii::app()->request->urlReferrer); ?>
	</div>

再进一步,如果要在这个查看页面进行审核操作,希望审核操作后也退回列表历史页面,

那么单单使用urlReferrer就不行了,因为它对于审核动作的处理逻辑而言记录了查看页面的url。

可以在查看页面中放一个隐藏字段:

    <input type="hidden" value=<?php echo Yii::app()->request->urlReferrer;?> id="backurl" name="backurl">

也就是把列表历史页面的路径做为请求参数传递给actionApprove, 那么在控制器的审核动作的处理完后就可以重定向到backurl.

    public function actionApprove() {
            //do your data update logic here
            //then redirect to history list page
            if(isset($_POST['backurl'])) $this->redirect($_POST['backurl']);
    }

iefreer


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值