2016-03-28 2 views
4

Ich habe eine Route mit dem ParameterLaravel 5 Einzel Route mehrere Controller-Methode

Route::get('forum/{ques}', "[email protected]"); 

Jetzt möchte ich eine Route so etwas wie

Route::get('forum/add', ['middleware' => 'auth:student', 'uses' => "[email protected]"]); 

gut, wenn ich localhost:800/forum/add schlug ich zu [email protected] geroutet statt [email protected]

Nun, ich weiß, ich kann dies in Show-Methode von ForumQuestionsController handhaben und eine andere Ansicht basierend auf dem Para zurückgeben Mutter. Aber ich will es auf diese Weise.

+0

schöne Frage ..... wie es !! –

+1

sieh dir das an http://stackoverflow.com/questions/36203020/laravel-single-route-point-to-different-controller-depending-on-slugs?noredirect=1#comment60056797_36203020 –

Antwort

1

Zuerst geben Sie diese ein

Route::get('forum/add', ['middleware' => 'auth:student', 'uses' => "[email protected]"]); 

Dann wird es die folgenden

Route::get('forum/{ques}', "[email protected]"); 

Eine andere Methode (unter Verwendung regulärer Ausdrücke Constraints)

Route::pattern('ques', '[0-9]+'); 
Route::get('forum/{ques}', "[email protected]"); 

Wenn ques eine Zahl automatisch zu gehen die show-Methode, ansonsten add Methode

+0

Nur die erste ist nützlich, da der Parameter {ques} auch eine Zeichenfolge ist, bei der die Schließung nicht funktioniert. Aber auch was zuerst, wenn ich diese beiden Routen in verschiedenen 'Route :: group()' hatte – jovanpreet

1

Sie können die Reihenfolge der Routen anpassen, um das Problem zu lösen.

Platzieren Sie add vor show, und Laravel wird dann die erste Übereinstimmung als Route verwenden.

Route::get('forum/add', ['middleware' => 'auth:student', 'uses' => "[email protected]"]); 
Route::get('forum/{ques}', "[email protected]"); 
+0

was ist, wenn ich diese beiden Routen hatte different 'Route :: group()' – jovanpreet

+0

@jovanpreet Wenn '' '{ques}' '' nur Zahl ist, könnte man '' 'Route :: pattern ('ques', '[0-9] +'); '' 'um den Typ von' '' {ques} '' 'einzuschränken. – KIDJourney

+0

nein es ist keine Nummer – jovanpreet

0

Ich denke, dass Ihre {ques} -Parameter nicht richtig bekommen. Sie können dies versuchen:

Route::get('forum/show/{ques}', "[email protected]"); 
Route::get('forum/add', ['middleware' => 'auth:student', 'uses' => "[email protected]"]); 

Wenn Sie irgendwelche Parameter in Show-Methode verwenden, Parameter hinzufügen:

public function show($ques){ 
}