Yii 2 中的 LinkPager 小部件生成双?因为路由规则

LinkPager widget in Yii 2 generating double ? because of route rule

我已经完成了一个分页系统并正在使用 LinkPager 小部件,但是这会在开始时生成带有 ?? 的链接,而不是应有的 ?

这似乎是因为我的 UrlManager 规则:

'foo/<name:[0-9a-zA-Z\-]+>.<some_id:\d+>/?' => 'foo/index',

我需要在末尾包含 ?,否则它无法解析带有结尾斜线的页面。

我是这样调用的 LinkPager:

LinkPager::widget(['pagination' => $pagination, 'options' => ['class' => 'clearfix']]);

其中 $pagination 显然是 Pagination 实例。

有什么方法可以阻止它,包括双问号?

问题出在 url 规则的这一部分:/?。您不能像那样指定尾部斜杠,正则表达式是错误的并且超出了模式。你也不能让它成为可选的。

如果你想要结尾的斜杠,将规则声明更改为扩展版本并将斜杠指定为 suffix,如下所示:

[
    'pattern' => 'foo/<name:[0-9a-zA-Z\-]+>.<some_id:\d+>',
    'route' => 'foo/index',
    'suffix' => '/',
],

corresponding section 官方文档中阅读更多关于指定 url 规则的替代格式。

还要检查这个