数字路由验证?

时间:2017-04-20 20:40:45

标签: php laravel

在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
}

2 个答案:

答案 0 :(得分:3)

使用regular expression constraint在您的路线中自行完成。

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

->where('id', '[0-9]+')会使路线仅对id的数值有效。访问user/foo将产生404。

答案 1 :(得分:2)

在路线定义中,您可以为路线参数

添加正则表达式
Route::get('run/{id}', 'YourController@run')->where('id', '[0-9]+');