在声明带有参数的路由时,Laravel会以某种方式无视紧随其后声明的任何其他路由(具有名称命名约定的任何路由)。
这是我的routes.php
文件
Route::group(['middleware' => ['auth','member'], 'prefix' => 'profile'], function () {
Route::get('/details/{profile_id}','Member\ProfileController@index');
Route::get('/details/image','Member\ProfileImageController@index');
Route::get('/details/details','Member\ProfileDetailsController@index');
});
当尝试拉动profile image
时,我会不断得到Requested resource could not be found
,但是如果我在/details/image
之前声明/details/{profile_id}
,那么它将起作用。
Laravel是否将{profile_id}
与image
匹配?我在Laravel文档中找不到任何可以说明这种情况的信息。
我做错什么了吗?
答案 0 :(得分:0)
您必须以这种方式安排路线。因为/details/image
将被视为/details/*
。
Route::group(['middleware' => ['auth','member'], 'prefix' => 'profile'], function () {
Route::get('/details/image','Member\ProfileImageController@index');
Route::get('/details/details','Member\ProfileDetailsController@index');
Route::get('/details/{profile_id}','Member\ProfileController@index');
});
或者您也可以使用过滤器获取确切值
Route::get('/details/{profile_id}','Member\ProfileController@index')->where('profile_id', '[0-9]+');
答案 1 :(得分:0)
您需要使用该路由public function endix
的{{1}}除外
在您的控制器上放这个
Route::get('/details/image','Member\ProfileImageController@index');
否则您可以更改它,因为索引是唯一的函数。