新闻中心

Yii2 GridView URL参数优化:自动移除未使用的查询参数

2025-11-06
浏览次数:
返回列表

Yii2 GridView URL参数优化:自动移除未使用的查询参数

本教程旨在解决yii2 gridview过滤后url中包含大量空值查询参数的问题。通过修改 `yii.gridview.js` 文件并配置 `assetmanager`,我们可以在不直接修改 `vendor` 目录代码的前提下,实现自动移除url中未填充的参数,从而使url更加简洁、美观且易于管理。

在Yii2应用中,当使用 GridView 组件及其自定义过滤器时,尤其是在存在大量过滤字段的情况下,用户在进行过滤操作后,浏览器地址栏的URL可能会变得非常冗长。例如,即使许多过滤字段没有被填充,它们的参数名依然会出现在URL中,且值为一个小写的 null 或空字符串,如 localhost:20024/consignment?fid=&post_code=&pud2_mrn=&pud2_status=PUDP&pud_status=&pud2_remaining_date=&mrn=&mrn_status=&ioss_number=&declaration_type=&status=&entry_at=&exit_at=&created_at=。这种冗余的URL不仅影响用户体验,也可能对SEO和URL分享造成不便。

为了解决这一问题,我们可以在参数发送到服务器之前,通过修改 GridView 相关的J*aScript逻辑来移除这些空值参数。以下是详细的实现步骤。

1. 复制并修改 yii.gridView.js

由于不建议直接修改 vendor 目录下的核心文件,以避免在项目更新时被覆盖,我们需要将 yii.gridView.js 复制到项目的公共资源目录,并对其进行修改。

操作步骤:

  1. 将 vendor/yiisoft/yii2/assets/yii.gridView.js 文件复制到你的 web 目录下的一个自定义J*aScript文件夹中,例如 web/js/。

  2. 打开复制后的 web/js/yii.gridView.js 文件。

  3. 找到 applyFilter 方法,在该方法内部,定位到 var pos = settings.filterUrl.indexOf('?'); 这一行。

  4. 在这一行代码之前,添加以下J*aScript代码片段:

    $.each(data, function (name, value) { 
        if (value[0].length === 0) {
            data[name] = null; 
        }
    });

    代码解释: 这段代码会遍历 GridView 过滤器发送的所有参数 (data 对象)。对于每个参数,它检查其值(通常是数组的第一个元素 value[0])的长度是否为零。如果长度为零,则表示该参数未被填充,将其值设置为 null。当URL参数被构建时,值为 null 的参数通常会被忽略,从而达到清理URL的目的。

2. 配置 AssetManager 以使用自定义JS文件

完成J*aScript文件的修改后,Yii2仍然会默认加载 vendor 目录下的原始 yii.gridView.js。为了让系统使用我们修改后的版本,需要通过配置 assetManager 来覆盖默认的资源包。

刺鸟创客 刺鸟创客

一款专业高效稳定的AI内容创作平台

刺鸟创客 110 查看详情 刺鸟创客

操作步骤:

  1. 打开你的应用程序配置文件,通常是 config/web.php (或 config/main.php,取决于你的应用结构)。

  2. 在 components 配置数组中,找到或添加 assetManager 组件的配置。

  3. 在 assetManager 的 bundles 数组中,添加对 yii\grid\GridViewAsset 的覆盖配置:

    'assetManager' => [
        'bundles' => [
            'yii\grid\GridViewAsset' => [
                'sourcePath' => '@webroot/js', // 指向你复制的 yii.gridView.js 所在的目录
                'basePath' => '@webroot/js',   // 同上
                'baseUrl' => '@web/js',        // 指向该目录的URL路径
            ],
        ],
    ],

    配置解释:

    • 'yii\grid\GridViewAsset':这是 GridView 组件使用的官方资源包的类名。
    • 'sourcePath' 和 'basePath':指定了 Yii2 应该从哪个物理路径查找 GridViewAsset 相关的源文件。这里我们将其指向 web/js 目录。
    • 'baseUrl':指定了浏览器访问这些资源时的基本URL。

3. 验证与注意事项

完成上述步骤后,刷新你的 GridView 页面并尝试进行过滤操作。你会发现,当某些过滤字段未输入任何值时,它们对应的查询参数将不再出现在URL中,使URL变得更加整洁。

注意事项:

  • 路径准确性: 确保 sourcePath、basePath 和 baseUrl 的配置与你实际存放 yii.gridView.js 的路径完全匹配。
  • 缓存清理: 如果在配置后发现更改未生效,请尝试清理浏览器缓存和Yii2的资产缓存(如果开启了 assetManager 的缓存功能)。
  • 影响范围: 此修改会影响所有使用 GridViewAsset 的 GridView 实例。如果你的应用中存在需要保留空值参数的特殊 GridView 场景,可能需要更细粒度的控制,例如通过J*aScript在特定的 GridView 实例上进行处理,而不是全局覆盖。
  • 版本兼容性: 本教程基于Yii2的常见版本,但未来Yii2核心库的更新可能会对 yii.gridView.js 的内部结构进行调整。如果遇到问题,请检查新版本的文件结构并相应调整代码。

通过这种方法,我们既解决了URL冗余的问题,又遵循了Yii2的开发最佳实践,避免了直接修改 vendor 目录,从而保证了项目的可维护性和升级的便利性。

以上就是Yii2 GridView URL参数优化:自动移除未使用的查询参数的详细内容,更多请关注php中文网其它相关文章!


# javascript  # 奎文区建设网站公司  # 珠海高端网站建设推广  # 天津好的市场营销推广  # 沧州网站优化营销报价  # 许昌百度关键词排名  # 黑河网站建设自助建站  # 优化SEO教程排名推广网站  # 薛城网站优化推广  # 招商网络营销网站优化  # 为零  # 值为  # 目录下  # 我们可以  # 将其  # 组中  # 自定义  # 为空  # 移除  # 配置文件  # ios  # ai  # iis  # yii  # app  # 浏览器  # seo  # js  # java  # php  # 茶叶推广营销线上线下有哪些渠道 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: Word2013如何插入视频和音频媒体_Word2013媒体插入的多媒体支持  WordPress插件开发:正确注册卸载钩子与避免常见陷阱  美团外卖商家服务中心入口 美团商家版官网入口  将JSON对象数组转置为键值对列表的实用指南  漫蛙manwa官网登录界面_漫蛙漫画网页版主站入口  TikTok网页版直接登录 TikTok网页端官方平台入口  晋江读书网页版在线登录 晋江读书电脑版官网  Golang如何实现Web文件静态资源服务器_Golang静态资源服务器开发与实践  12306几点到几点不能订票? | 官方最新系统维护时间全解析  护手霜蹭到袖口上了如何清洗? 怎样避免留下一圈油印?  Win11怎么开启卓越性能模式 Win11电源选项启用高性能释放硬件潜力【方法】  J*a如何使用AtomicInteger控制计数_J*a无锁计数器性能分析  sublime侧边栏怎么增强功能_SideBarEnhancements for sublime安装与配置  composer的"require-dev"部分是用来做什么的?  iCloud登录入口网页版 苹果iCloud官网登录  QQ邮箱官方登录入口_QQ邮箱网页版快捷使用平台  《GTA6》开发画面疑似泄露!这次可不是AI了  QQ邮箱网页版快速登录 QQ邮箱邮箱账号官方入口地址  J*a TimerTask文件监控:HashMap状态管理与常见陷阱规避指南  vivo手机互传视频怎么操作_vivo手机互传视频详细传输方法  必由学官网首页入口 必由学教师网页版登录指南  抖音创作助手登录入口_抖音创作辅助工具官网直达  CSS实现侧边栏导航项全宽圆角悬停背景效果  html怎么在cmd下运行php文件_cmd运行html中php文件方法【教程】  顺丰国际快递查询 国际件官方查询入口  Golang如何使用buffered channel提高性能_Golang buffered channel优化技巧  新三国志曹操传110级星符试炼夏侯渊极难攻略  手机CPU怎么影响游戏体验_手机CPU对游戏性能的影响分析  J*a里如何实现订单支付与库存同步功能_支付库存同步项目开发方法说明  必由学官方平台入口 必由学在线课堂登录地址  蛙漫2台版漫画地址 Manwa2正版网页版链接  在J*a中如何开发简易电子商务商品管理系统_商品管理系统项目实战解析  地铁跑酷免费秒玩入口链接 地铁跑酷小游戏免费秒玩网站  拷贝漫画电脑版官网入口 拷贝漫画(PC版)在线直达  MinIO大规模对象列表性能瓶颈深度解析与外部元数据管理策略  汽车之家官方网站官网入口_汽车之家网页版直接进入  QQ邮箱网页版入口登录 QQ邮箱在线邮箱官方通道  React Hooks最佳实践:动态组件状态管理的组件化方案  《刺客信条4:黑旗》重制版新细节曝光:无缝加载 地图更细致!  Win10怎么制作U盘启动盘 Win10系统安装U盘制作教程【详解】  深入理解rpy2中的类型转换:优化Python对象到R矩阵的映射  2025-2030年全球乘用车销量预测:新能源成增长主力  浏览器打开即用 美图秀秀网页版入口  Node.js CSV 数据处理:基于字段值条件过滤整条记录的策略  Pandas DataFrame:高效添加条件计算列  Python中高效访问嵌套字典与列表中的键值对  58动漫网在线官方网 58动漫网正版动漫入口网址  sublime怎么进行远程开发编辑_配置rsub/rmate实现sublime编辑服务器文件  学习通网页版快速入口 学习通官网网页版直接打开  Safari浏览器输入栏卡顿如何解决 Safari搜索建议与缓存清理 

搜索