Laravel 分页链接逗号被编码为%2C,如何解码还原为可读格式?
Laravel分页链接逗号编码解决方法
Laravel生成URL时默认遵循RFC3986规范,会将逗号这类保留字符编码为%2C,属于标准行为,你可以通过以下几种方法实现输出解码后的分页链接:
方案1:自定义分页视图(最推荐,全局生效)
该方案修改后所有分页的links()输出都会自动解码,无需每次写业务逻辑:
- 首先执行命令发布Laravel默认分页模板到项目目录:
php artisan vendor:publish --tag=laravel-pagination - 打开生成的
resources/views/vendor/pagination/目录,找到你当前使用的分页模板(比如Tailwind CSS对应tailwind.blade.php,Bootstrap对应bootstrap-5.blade.php),将模板中所有输出分页链接的{{ $url }}变量替换为{{ urldecode($url) }}即可。
方案2:单独处理当前请求的分页器(仅当前业务生效)
如果你不想修改全局分页逻辑,可以只在当前筛选的分页代码中做处理:
// 你的原有分页筛选逻辑 $products = Product::where(/* 筛选条件 */) ->paginate(10) ->appends(request()->input()); // 新增这段代码解码分页路径中的编码逗号 $products->setPath(urldecode($products->getPath()));
方案3:JS侧兼容处理(无需修改后端代码)
编码后的URL本身不会影响JS正常读取参数,你可以在JS中直接解码参数即可解决报错问题:
const query = new URLSearchParams(window.location.search); // 解码参数即可得到带逗号的原始值 const type = decodeURIComponent(query.get('type')); const capacity = decodeURIComponent(query.get('capacity'));
内容的提问来源于stack exchange,提问作者Sukhchain Singh
相关产品推荐
相关产品推荐

