
本教程详细介绍了如何在Yii2框架中,特别是结合Kartik GridView使用时,通过修改`yii.gridView.js`文件并配置`assetManager`,实现自动移除URL中未填充或为空的查询参数。此方法避免了直接修改`vendor`目录下的文件,确保了代码的可维护性,并有效优化了URL的整洁性与可读性。
在Yii2应用中,当使用GridView(特别是集成高级过滤功能的如Kartik GridView)进行数据筛选时,经常会遇到URL中包含大量空值的查询参数,例如?fid=&post_code=&pud2_mrn=&pud2_status=PUDP&pud_status=。这些空参数虽然不影响功能,但会使URL显得冗长且不易阅读。本教程旨在提供一种在Yii2服务端层面(通过对客户端JS逻辑的定制)清除这些无用参数的专业方法,而无需依赖复杂的纯前端JavaScript解决方案。
为了避免直接修改vendor目录下的核心文件,我们首先需要将yii.gridView.js复制到项目可控的目录中,例如web/js。
步骤:
从vendor/yiisoft/yii2/assets/gridview/yii.gridView.js路径复制文件到您的项目目录,例如web/js/yii.gridView.js。
打开您复制的web/js/yii.gridView.js文件。
找到applyFilter方法。在该方法内部,定位到即将构建URL查询字符串的部分。具体来说,在以下这行代码之前:
var pos = settings.filterUrl.indexOf('?');添加以下JavaScript代码片段:
$.each(data, function (name, value) {
// 检查参数值是否为空数组或空字符串
// value[0] 通常用于访问数组中的第一个元素,对于单个字符串参数,其长度为0表示空
if (Array.isArray(value) && value.length === 1 && value[0].length === 0) {
data[name] = null; // 将空值参数设置为null,以便在URL构建时被忽略
} else if (typeof value === 'string' && value.length === 0) {
data[name] = null;
}
});代码解释:
完成对yii.gridView.js的定制后,我们需要告知Yii框架使用我们修改后的版本,而不是vendor目录中的原始版本。这通过配置应用程序的assetManager组件来实现。
在您的应用程序配置文件(通常是config/web.php或config/main.php)中,找到components部分,并添加或修改assetManager配置:
'assetManager' => [
'bundles' => [
'yii\grid\GridViewAsset' => [
// 指定定制JS文件的源路径,这里指向我们复制的JS文件所在的目录
'sourcePath' => '@webroot/js',
// 指定定制JS文件在Web可访问目录中的基础路径
'basePath' => '@webroot/js',
// 指定定制JS文件在URL中的基础URL
'baseUrl' => '@web/js', // 或者 'vendor/js' 如果你希望它在vendor子目录下
// 明确指定使用我们定制的JS文件,覆盖默认的
'js' => [
'yii.gridView.js',
],
],
],
],配置解释:
注意事项:
完成上述配置后,重新加载您的GridView页面。当您使用过滤器进行筛选,并且某些过滤字段留空时,提交表单后观察URL。您会发现那些没有填充值的查询参数将不再出现在URL中,使得URL更加简洁和专业。
例如,原始URL可能为: localhost:20024/consignment?fid=&post_code=&pud2_mrn=&pud2_status=PUDP&pud_status=&mrn=
经过优化后,如果只有pud2_status被填充,URL将变为: localhost:20024/consignment?pud2_status=PUDP
通过以上步骤,我们成功地在Yii2框架中实现了GridView过滤参数的URL优化。这种方法不仅解决了URL冗长的问题,而且遵循了Yii2的最佳实践,即不直接修改vendor目录下的文件,而是通过定制和assetManager配置进行扩展,从而保证了代码的可维护性和项目的长期稳定性。
以上就是Yii2 GridView URL参数优化:自动清除空值查询参数的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号