1、在 Yii2 中,如何实现 case/ 的路由。如果配置 ‘case/’ => ‘use-case/index’, 是无效的,打开 /case/ 会 302 重定向至 /case. 如图1

2、调整配置如下,’suffix’ => ‘/’, 响应 200 ,且打开 /case,也会自动跳转至 /case/ 符合预期。如图2

'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'enableStrictParsing' => true,
'normalizer' => [
'class' => yii\web\UrlNormalizer::class,
'collapseSlashes' => true,
'normalizeTrailingSlash' => true,
],
'rules' => [
// 精彩案例
[
'pattern' => 'case',
'route' => 'use-case/index',
'suffix' => '/',
],
],
],
3、 生成的链接为:精彩案例 。符合预期。如图3
![<?= Html::a('精彩案例', ['use-case/index'], ['target' => '_blank']) ?> 生成的链接为:<a href="/case/" target="_blank">精彩案例</a> 。符合预期。](https://media.shuijingwanwq.com/2025/07/3-3.jpg)
4、/case/list-.html 当点击第 1 页时的链接是这样的。希望是 /case/
$dataProvider = new ActiveDataProvider([
'query' => $query,
'pagination' => [
'pageSize' => 9,
'pageSizeParam' => false,
'pageParam' => 'page',
],
'sort' => [
'defaultOrder' => ['id' => SORT_DESC],
],
]);
$dataProvider->pagination,
'options' => ['class' => 'page'], //
'linkContainerOptions' => ['tag' => 'li'],
'activePageCssClass' => 'active',
'prevPageCssClass' => 'prev',
'nextPageCssClass' => 'next',
'disabledPageCssClass' => 'disabled',
'nextPageLabel' => '下一页',
'prevPageLabel' => '上一页',
]) ?>
5、自定义 Pagination 类 Yii 默认从第 0 页开始分页,第一页是 page=0,需要重写分页类来处理第一页单独的 URL。
params === null ? Yii::$app->getRequest()->getQueryParams() : $this->params;
// 移除 page 参数
unset($params[$this->pageParam]);
if ($page > 0) {
// 页码从0开始,所以需要 +1
$params[$this->pageParam] = $page + 1;
// 第二页及以上:/case/list-2.html
return Yii::$app->getUrlManager()->createUrl(array_merge(
['use-case/index'],
$params
));
}
// 第1页:/case/
return Yii::$app->getUrlManager()->createUrl(array_merge(
['use-case/index'],
$params
));
}
}
// $dataProvider = new ActiveDataProvider([
// 'query' => $query,
// 'pagination' => [
// 'pageSize' => 9,
// 'pageSizeParam' => false,
// 'pageParam' => 'page',
// ],
// 'sort' => [
// 'defaultOrder' => ['id' => SORT_DESC],
// ],
// ]);
$dataProvider = new ActiveDataProvider([
'query' => $query,
'pagination' => new CleanPagination([
'totalCount' => $query->count(),
'pageSize' => 9,
'pageSizeParam' => false,
'pageParam' => 'page',
]),
'sort' => [
'defaultOrder' => ['id' => SORT_DESC],
],
]);
PHP / Laravel / Yii2 老项目维护与长期技术支持
如果你的 PHP / Laravel / Yii2 项目已经上线,但遇到原开发离职、Bug 长期无人修复、接口不稳定、性能下降、代码难以接手等问题,可以联系我做一次远程技术排查。
适合以下情况:
✅ 老旧 PHP 系统无人维护
✅ Laravel / Yii2 项目 Bug 修复
✅ 后台管理系统小功能迭代
✅ RESTful API 接口排查
✅ MySQL / Redis / Nginx 性能问题
✅ 长期远程兼职维护
可先从一次小问题开始:
✅ 线上报错排查
✅ 接口异常分析
✅ 慢查询与性能瓶颈定位
✅ 代码结构初步评估
✅ 部署环境与日志检查
如需咨询,请联系我,并注明:PHP 维护咨询。
联系方式:
Telegram:@shuijingwan
微信:13980074657
邮箱:shuijingwanwq@gmail.com

发表回复