laravel 记录开发过程一个路由问题(参数正则限制)

背景:用户个人资料页(其他用户可查看)和个人中心页路由问题

(写在前面:可能是我菜,大佬们轻喷)

记录开发过程一个路由问题

Route::get('/user/info', 'UsersController@userInfo');

Route::get('/user/{id}', 'UsersController@userHome');

顺位之后

/user/info 路由会调起userHome方法

本作品采用《CC 协议》,转载必须注明作者和本文链接
it_cwc
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 8

我也遇到过类似的场景,这个顺位问题是可以通过路由的正则约束功能规避的。

文档指路:路由《Laravel 5.5 中文文档》

深入一下的话,如果顺位的前一个是个资源路由,在 PUT DELETE 这种资源后面拼 id 的情况我就不知道怎么避免了,粗暴的解决的话改顺位或者换路由......

2个月前 评论
jcc123

我这样规避的

/user/{id}/show
2个月前 评论

laravel 的路由文件是根据正则从上往下走的,这两个的路由正则是一样的,因此那个在前走那个,解决办法有两个 调换路由顺序,或者给id的这个路由添加路由正则

2个月前 评论

@Molin 找到了,谢大佬指点

file

Route::resource('users', 'UsersController'); 一般我很少用到资源路由了 :speak_no_evil:

2个月前 评论

后面加上限制条件 , id 只能为int

2个月前 评论

Route::get('/user/{id}', 'UsersController@userHome');写到前面

2个月前 评论

大佬大佬,学到了 :heart:

2个月前 评论

加个正则什么的或者在家一个参数,{id}对程序来说id只是一个变量的名字,可以使数字也可以是字符串info。下面的肯定会覆盖上面的。

2个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!