2017-04-20 65 views
0

在Laravel執行路由參數驗證以確保id(GET)是數字的正確方法是什麼?我目前在做數字路由驗證?

這樣:

public function run($id, Request $request) 
{ 
    if (!is_numeric($id)) { 
     return response()->json([ 
      'success' => false, 
      'message'  => 'ID must be numeric' 
     ]); 
    } 

    // Do something else 
} 

回答

3

做在你自己的路線,使用regular expression constraint

Route::get('user/{id}', function ($id) { 
    // 
})->where('id', '[0-9]+'); 

->where('id', '[0-9]+')將導致只路線是有效的id數值。訪問user/foo將導致404

+0

哇,我從來不知道我可以使用'where'的路線。 –

+2

@ I'll-Be-Back是的,你可以。或者,您可以使用路由模型綁定,如果找不到具有id的模型,則會生成404。讓您不必手動生成錯誤。 – ceejayoz

+0

@AkshayKhale呃,好嗎?該鏈接已經在我的答案中。 – ceejayoz

2

在你的路由定義,你可以添加一個正則表達式的路由參數

Route::get('run/{id}', '[email protected]')->where('id', '[0-9]+');