中间件修改参数后,和控制器不同,无法联动

ala3246875

假设我有一个路由,是 /test/{id}
当我在中间件内,使用
$request->route->setParams(['id' => '888']);
修改过以后,而路由闭包如果接收这个id参数,那么他还是原来的。
修改过的必须通过$request->route->param('id') 获取,这样很麻烦,也不好用,容易出错。

建议修改Webman\App文件的 中间件 封装函数,340-373行的$args参数。
改为 $args = ...array_values($request->route->param)
这样修改过的参数,就可以直接用控制器获取。

setParams 也建议同时支持2种模式,
setParams('id', 888);
setParams(['id'=>888]);

另外建议增加一个类,提供直接中间件修改参数的能力。
hasParameter
hasParameters
setParameter
setParameters
parameter
parameters
forgetParameter
forgetParameters

这样可以让中间件操作 路由里的参数更加的强大

218 1 0
1个回答

walkor

非常感谢你的建议
后续版本会考虑这个功能

  • ala3246875 17天前

    walkor 作者你好,你做开源,我为你开心,提点建议,功能,bug,改不改都没事,但是很容易被别人攻击这个我很难接受。来论坛,经常受气。 以后不会再发表任何看法,有什么问题我自己改改好了。

  • walkor 17天前

    开源过程中遇到不同意见和批评很正常,但这也是开源项目发展的一部分,不用太在意,大家也都是为了webman更好。
    另外并不是所有人的所有的功能建议都会被全盘采纳,对于某个功能建议官方也要在受众面、易用性、可维护、简洁、性能等多方面考虑,所有功能建议都全盘接收也不是大家想要的结果。
    bug没得说,肯定要修。

    做开源不是一件容易的事,维护项目代码、文档、社区、听取意见、删选建议都要花费很多时间,无法照顾所有人的感受,希望体谅

  • ala3246875 17天前

    明白,我不觉得他们之前说的是意见,而是攻击

🔝