我有一个带参数
的路线Route::get('forum/{ques}', "ForumQuestionsController@show");
现在我想要一条类似
的路线Route::get('forum/add', ['middleware' => 'auth:student', 'uses' => "ForumQuestionsController@add"]);
当我点击localhost:800/forum/add
时,我会被路由到ForumQuestionsController@show
而不是ForumQuestionsController@add
我知道我可以在ForumQuestionsController
的show方法中处理此问题,并根据参数返回不同的视图。但我想以这种方式。
答案 0 :(得分:1)
您可以调整路线的顺序来解决问题。
将final List<Device> devicesList = jsonFileHandlerDevice.getList();
ConcurrentMap<Integer, Device> map =
devicesList.stream()
.collect(Collectors.toMap(item -> item.id, item -> item));
放在public class Device {
public MobileOs mobileOs;
public Integer id;
public Device() {
}
public Device(MobileOs mobileOs, double osVersion, int allocatedPort, Integer id, String uuid) {
this.mobileOs = mobileOs;
this.id = id;
}
}
之前,然后laravel将使用第一个匹配作为路线。
add
答案 1 :(得分:1)
首先给出这个
Route::get('forum/add', ['middleware' => 'auth:student', 'uses' => "ForumQuestionsController@add"]);
然后是以下
Route::get('forum/{ques}', "ForumQuestionsController@show");
另一种方法(使用正则表达式约束)
Route::pattern('ques', '[0-9]+');
Route::get('forum/{ques}', "ForumQuestionsController@show");
如果ques是一个数字,它将自动转到show方法,否则添加方法
答案 2 :(得分:0)
我认为您的{ques}参数无法正常使用。你可以试试这个:
Route::get('forum/show/{ques}', "ForumQuestionsController@show");
Route::get('forum/add', ['middleware' => 'auth:student', 'uses' => "ForumQuestionsController@add"]);
如果您在show方法中使用任何参数添加参数:
public function show($ques){
}