Php Yii路由+CPager

Php Yii路由+CPager,php,yii,routing,Php,Yii,Routing,我有自己的分页类 class MyPager extends CLinkPager 我有控制器 class LetterController extends Controller 路线 '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>' 但是当我使用分页时,链接看起来就像 http://DOMAIN/letter?id=1&page=

我有自己的分页类

class MyPager extends CLinkPager
我有控制器

class LetterController extends Controller
路线

'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>'
但是当我使用分页时,链接看起来就像

http://DOMAIN/letter?id=1&page=2 
我想要

http://DOMAIN/letter/1?page=2 
我该怎么做

我发现,如果你运行这个代码

var_dump(Yii::app()->createUrl('', array('id' => 1)));
var_dump($this->createUrl('', array('id' => 1)));
第一个var_转储向您显示字母/1


第二个变量转储向您显示字母?id=1,因为您从控制器创建url。它说的是函数引用

为此中定义的指定操作创建相对URL 控制器

你需要通过第一个论证

URL路由。这应采用以下格式: “ControllerID/ActionID”。如果ControllerID不存在,则 当前控制器ID将作为路由的前缀。如果路线是 如果为空,则假定为当前操作。如果控制器 属于模块,则模块ID将作为路由的前缀。如果 如果不需要模块ID前缀,则路由应以 斜杠“/”

对于CLinkPager,您可以更改路线

$pager = new CLinkPager();
$pager->route = YOUR_ROUTE

你有路由规则:“/”=>“/index”?没有,但我添加了它。没有变化如果它与默认的CLinkPager工作相同,那么请将其从问题中删除。目前我只看到路由/URL创建有问题。顺便说一句,你在哪里添加的?在路线列表的顶部还是底部?那里的秩序很重要。有关详细信息,请参阅和
$pager = new CLinkPager();
$pager->route = YOUR_ROUTE