thinkphp6 路由可选参数配置后
#0 [0]InvalidArgumentException in Container.php line 455
方法参数错误:id
路由配置参考手册如下
支持对路由参数的可选定义,例如:
Route::get('blog/:year/[:month]','Blog/archive');
// 或者
Route::get('blog/<year>/<month?>','Blog/archive');
变量用[ ]包含起来后就表示该变量是路由匹配的可选变量。
以上定义路由规则后,下面的URL访问地址都可以被正确的路由匹配:
http://serverName/index.php/blog/2015
http://serverName/index.php/blog/2015/12
采用可选变量定义后,之前需要定义两个或者多个路由规则才能处理的情况可以合并为一个路由规则。
可选参数只能放到路由规则的最后,如果在中间使用了可选参数的话,后面的变量都会变成可选参数。
小编查看手册,发现代码并没有出错
看看实现代码:
public function editMd($id)
{}
我们可以看到,这里的定义貌似没有问题,但实际上缺少默认参数。
这就好比 C/C++
等语言中使用变量却没有定义。
改成下面这样就OK啦!
public function editMd($id = -1)
{}
说到底也就是给个默认值。