这个通常由路由绑定出的问题,注意有绑定模型的路由,同路径的路由需要放在没绑定路由的后面
例如:/posts/create 和/posts/{post}的是同路径,/posts/{post}必须放在/posts/create 后面
图,刚上手接触laravel,出的问题毫无头绪,就放到一边了!
幸好在这里查到了解决方案 http://coding.imooc.com/learn/questiondetail/26102.html
方案解读:
路由访问检测是从上到下,当检测到{}时后面的会替换成含有{}
由于在create 之前有{} 所以 laravel 会把create 换成{create}
解决方法
把含有{}放后面,要么加个路由正则,限制只接收数字参数
这是转字别人,谢谢你。
Route::group(['prefix' => 'posts'],function(){ //文章列表 Route::get('/','PostController@index'); //创建文章 Route::get('/create','PostController@create'); Route::post('/posts','PostController@store'); //编辑文章 Route::get('/{post}/edit','PostController@edit'); Route::put('/{post}','PostController@update'); //删除文章 Route::get('/delete','PostController@delete'); //文章詳情 Route::get('/{post}','PostController@show'); });
运行完后才发现是自己把顺序搞反了 调整一下位置 原来的也是可以用的,zz了
//文章列表Route::get('/posts','\App\Http\Controllers\PostController@index');//创建文章Route::get('/posts/create','\App\Http\Controllers\PostController@create'); Route::post('/posts','\App\Http\Controllers\PostController@store');//文章詳情Route::get('/posts/{post}','\App\Http\Controllers\PostController@show');//编辑文章Route::get('/posts/{post}/edit','\App\Http\Controllers\PostController@edit'); Route::put('/posts/{post}','\App\Http\Controllers\PostController@update');//删除文章Route::get('/posts/delete','\App\Http\Controllers\PostController@delete');
报错:NotFoundHttpException
这种一般都是路由配置错误