2017-05-23 63 views
0

我有一個與我的路線問題,因爲一些不同的網址和不同的方法似乎使用一種方法。Laravel 5.4不同的路線指向不同的方法,但響應顯示相同的頁面

路線/網絡PHP

Route::group(['middleware' => ['role:utilisateur,usage']], function() 
{ 
    Route::group(['prefix' => 'qcm'], function() 
    { 
     Route::get('/', '[email protected]'); 
     Route::get('{id?}', '[email protected]'); 
     Route::post('answer', '[email protected]'); 
     Route::get('result', '[email protected]'); 
     Route::get('get-question', '[email protected]'); 
    }); 
} 

ModuleController.php

class ModuleController extends Controller 
{ 

    public function index() 
    { 
    return View::make('qcm.index') 
    } 


    public function qcm($id) 
    { 
     return View::make('qcm.qcm'); 
    } 

    public function getQuestion() 
    { 
    return response()->json(['question' => 'test?']); 
    } 

    public function putAnswer(Request $request) 
    { 
    return response()->json(["result" => "next"], 200); 
    } 


    public function getResult() 
    { 
    return View::make('qcm.result'); 
    } 
} 

當我打電話test.com/qcm/result或test.com/qcm/get-question ,它似乎稱爲test.com/qcm/{id},並返回其視圖,我不知道爲什麼php artisan route:list顯示路線指向好的方法。

有誰知道我的代碼爲什麼產生這樣的結果?我錯過了什麼嗎?

非常感謝您的幫助。

+0

招'{ID?}'線,以結束該組的,因爲它的任何東西相匹配。 – MrRP

+0

我剛試過,很不幸,它不起作用 –

回答

0

Route::get('{id?}', '[email protected]');放到路由列表的末尾。 e.g:

Route::group(['middleware' => ['role:utilisateur,usage']], function() 
{ 
    Route::group(['prefix' => 'qcm'], function() 
    { 
     Route::get('/', '[email protected]'); 
     Route::post('answer', '[email protected]'); 
     Route::get('result', '[email protected]'); 
     Route::get('get-question', '[email protected]'); 
     Route::get('{id?}', '[email protected]'); 
    }); 
} 
+0

它的工作原理,謝謝!但是,你能解釋爲什麼它會這樣工作嗎? (只要SO允許,我會立即將您的答案標記爲正確) –

+0

因爲Laravel按訂單進行路線檢查。如果你把它放在最前面,請求將被匹配,並且它不會檢查其餘的。 –

0

Route::get('result', '[email protected]');

呼叫​​。它不應該叫ModuleController

像這樣:

​​
相關問題