2016-11-02 3 views
0

Ich habe eine Route von GET-Typ mit einigen Parametern. Zum BeispielLaravel Routing :: überprüfen Parameterwert und umleiten

Route::get('/my-route/{id}',array('uses'=>'[email protected]')); 

Ich möchte Wert des Parameters ID überprüfen und, wenn diese id = 1, dann auf eine andere Strecke umleiten sonst mit ihm fortzusetzen. Was ich tue, ist wie dieser

Route::get('/my-route/{id}',function($id){ 
    if($id==1){ 
     return Redirect::to(URL::route('my-another-route')); 
    } 
    else{ 
     //What should I do here so my route works as before. 
    } 
}); 

In anderen Teil ich meine Routen wollen MyController @ MyAction zusammen mit Parametern.

Dank

+0

Etwas Ähnliches nicht in der Route kontrolliert werden sollte. Ich würde Ihnen empfehlen, dies in Ihrer Controller-Funktion wie 'if ($ id == 1) return redirect() -> route ('RouteName');' – DestinatioN

Antwort

0

Der einfachste Weg, dies zu Ihrem Controller zur Arbeit zu kommen und Route Ihre Route zurück in den Weg gelegt wird und dann die if-Anweisung an die Spitze des Controllers erhalten:

public function myAction() { 

    if ($id == 1) { 
     return Redirect::to(URL::route('my-another-route')); 
    } 

an die Spitze Ihrer Controller-Methode.

Auch sind, wenn Sie nur uses => '[email protected]' mit Ihrer Route verwenden, können Sie einfach tun:

Route::get('/my-route/{id}','[email protected]'); 

hoffe, das hilft!

1

Sie können es als tun:

Route::get('/my-route/{id}',function($id){ 
    if($id==1){ 
     return Redirect::to(URL::route('my-another-route')); 
    } 
    else{ 
     return app()->call(myController::class, ['id' => $id], 'myAction'); 
    } 
});