thinkphp5.1使用Route静态方法rule定义动态路由,添加post报错问题 | 我的日常分享

thinkphp5.1使用Route静态方法rule定义动态路由,添加post报错问题

thinkphp5.1使用Route静态方法rule定义动态路由,添加post报错问题

一、问题描述

在thinkPHP中使用Route::rule定义动态参数,如果请求方法包括post,则会报错[0] RouteNotFoundException in Route.php line 899 当前访问路由未定义或不匹配

定义方式:

1
2
3
4
5
6
7
/**
*下面两种定义方法,加了post均会报错。
*/
Route::rule('home/cateEdit/[:id]','admin/cate/edit','get|post');
//定义方式1:访问http://www.tpblog.com/index.php/admin/home/cateEdit/2.html与访问http://www.tpblog.com/index.php/admin/home/cateEdit 均不行
Route::rule('home/cateEdit/:id','admin/cate/edit','get|post');
//定义方式2:访问http://www.tpblog.com/index.php/admin/home/cateEdit/2.html 报错

image-20220112084621968

image-20220112084515023

二、解决方案

但是由于我们要通过ajaxpost请求这个路由的控制器获取导航信息,所以post方法不能去掉。

解决方法:

分开定义两次。

1
2
Route::get('home/cateEdit/[:id]','admin/cate/edit');
Route::post('home/cateEdit/[:id]','admin/cate/edit');