$this->request->param()多出来一个参数怎么办

2025-03-24 16:18:32

场景:使用thinkphp5.0版本时发现一个问题,项目由线上移动到本地来,在本地运行时,这个函数获取参数时多出一邗锒凳审个以“模块/控制器/方法”为key的数组元素(如下图红框),很是不解,查看了源代码,也没有发现原因,咱也不太清楚,咱也不敢问。只能自己解决.

$this->request->param()多出来一个参数怎么办

工具/原料

thinkphp5.0

phpstorm

发现问题

1、将线上代码pull到本地,运行时代码保持,后面排查我在本地运行时发现多出一个“模块/控制器/方法”的参数。

2、排查发现线上环境和本地环境,有区别的便是线上用的是nginx,本地用的apache,为了验证是不是这个导致的,我把本地转换成了nginx,果然代码回复正常,但是这不能靠更换环境去解决这个问题吧,所以得解决

解决问题

1、首先在相应模块下面添加一个common.php文件(有的可以不用添加),打开文件,新建一个函数名字为filterParam(自己取名字);这common文件为tp5框架模块公共文件,这里里面的函数众所周知,可以公用。

$this->request->param()多出来一个参数怎么办

2、过滤掉多出来的函数,大致思路是,有便过滤没有便放行,所以这个写起来写比较方便,1.首先我们获取当前module名和controller名以及action名,2.然后和所获取的所有参数键名对比,存在就删除该属性,然后跳出循环,因为只有一个这样的属性。然后返回正确的数据即可。具体可参考下图,如果你有更好的解决办法可以留言给我。

$this->request->param()多出来一个参数怎么办
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢