2017-04-20 1 views
0

In Laravel, was ist die korrekte Art und Weise, die Parameterüberprüfung durchzuführen, um sicherzustellen, dass id (GET) numerisch ist?Numerische Routenvalidierung?

ich zur Zeit auf diese Weise tue:

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

    // Do something else 
} 

Antwort

3

Machen Sie es sich in Ihrem Routen, eine regular expression constraint verwenden.

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

Die ->where('id', '[0-9]+') bewirkt, dass die Route nur für numerische Werte von id gültig. user/foo Zugriff auf in einem 404.

+0

Wow einen regulären Ausdruck für die Routenparameter hinzufügen können, ich wusste nie konnte ich 'where' für die Route. –

+2

@ I'll-Be-Back Ja, du kannst. Alternativ können Sie auch die Bindung des Routenmodells verwenden, wodurch ein 404 generiert wird, wenn kein Modell mit der ID gefunden werden kann. Sie müssen nicht manuell einen Fehler generieren. – ceejayoz

+0

@AkshayKhale Uh, OK? Dieser Link ist bereits in meiner Antwort. – ceejayoz