关于page的Widget 一个建议

Yii的widget都很实用。 :lol: 我是懒人,分页就直接用了CLinkPager。

不过在实际项目上,有些地方总需要对用户体验需要做定制,比如分页并不能加锚点。

比如说,现在我是一篇blog,对回复做了分页。

这个时候,我点击“下一页”,“上一页”。这个时候我希望是直接跳转到回复模块的内容。但是blog本身内容又太长了。。。所以需要加锚点。

我是这样解决的,修改了一下CLinkPager,在生成的Chtml::link的地方做判断,检测是否有那么name,有则加上‘#name’; :lol:


<?php $this->widget('CLinkPager',array('pages'=>$pages_review,'name'=>'div_main_content')); ?>

于是,不想每次更新框架都去修改… :D

不要去修改框架代码,这种情况最好是派生新的类,这也是OOP的精髓之一。

我都是写个类来做的。。呵呵。

这样框架升级也方便,不需要担心。

分页也是的。

也很偷懒的。 ;D

我不用CHTML,但是我知道 CUrlManager的 createUrl,是可以支持 ‘#’ 的!




$params = array('userid' => 100, '#' => '锚名称');

$this->createUrl($route, $params);



我想 CLinkPager 如果里面如果可以传递自定义参数的话,你也可以试试

CLinkPager 绝对路径怎么做?

追踪这个方法

createPageUrl

知道分页url调用的是当前控制器的createUrl方法 一种办法是复写当前控制器的该方法 但最好有一个变量能够切换是否使用底层的 createAbsoluteUrl(控制器都有该方法) 这样额外定义一个公共变量 在分页前调用这个公共变量类似如:

Yii::app()->controller->createUrlAsAbs = true ;(你自己定义这个变量 并复写createUrl方法 在其中判断这个变量的值 如果是true那么切换到底层的createAbsoluteUrl方法上就好)

以上只是我的实现思路 并没有实际操作 所以对错未知 :lol: 仅仅给你个参考而已

嗯,首先谢谢回答,我看了源码,似乎是不可能通过配置的方式实现,所以我派生了一个子类来做,分页定制的地方多,所以还是不直接使用CLinkPager比较好。