跟着网上视频学习laravel5.4,写了下面两行代码。Route::get('/posts/{post}','AppHttpControllersPostController@show');
Route::get('/posts/create','AppHttpControllersPostController@create');
然后视频中访问localhost/laravel/public/posts/create 结果是成功的,而我访问却跳转到了show中,求解??
7 回答
慕少森
TA贡献2019条经验 获得超9个赞
加一个正则表达式限制就好了,默认情况下,laravel
的路由匹是从上往下的,匹配到符合的第一条后,就不会往下匹配了:
//假设post为int
Route::get('/posts/{post}','AppHttpControllersPostController@show')->where('post', '[0-9]+');
Route::get('/posts/create','AppHttpControllersPostController@create');
千万里不及你
TA贡献1784条经验 获得超9个赞
- 第一个条路由中的 {post} 是通配,会把 create 作为 {post} 传入到你的
AppHttpControllersPostController@show
方法。 - 最简粗暴单的解决方法,是这两条路由位置对调,create 那条放在第一即可实现。
蓝山帝景
TA贡献1843条经验 获得超7个赞
代码规范一下哈哈
Route::get('/posts/{post}/show','AppHttpControllersPostController@show')->where('post', '[0-9]+');
- 7 回答
- 0 关注
- 628 浏览
添加回答
举报
0/150
提交
取消