2017-06-10 2 views
1

Ich habe 2 Arten von Urls in meiner Anwendung:Routing Problem, immer Slug in Laravel

  1. base_url/category1/
  2. base_url/category1/categorypage1
  3. vielleicht in der Zukunft: base_url/category1/subcategory1/und
  4. base_url/category1/subcategory1/subcategorypage1

In der web.php Datei mit diesem Code:

Route::any('{slug}', '[email protected]'); Ich habe die base_url/category1/ Art von Seiten

und unter Verwendung von: Route::get("{slug}/{slug2}", "[email protected]")->where('path', '.+'); Ich habe diese Art der Seiten: base_url/category1/categorypage1.

Ich kann nicht beide verwenden, denn für einen von ihnen habe ich 404. Ich suche nach einem Fix, um alle URL-Typen in einem einzigen Controller zu bekommen. Wie kann ich das machen ?

[UPDATE]

Wenn ich in dieser Reihenfolge verwenden, funktioniert es:

Route::any('{slug}', '[email protected]'); 
Route::any("{slug}/{slug2}", "[email protected]"); 

Aber ich bin nicht so froh, dass es so zu verwenden. Ich bin auf der Suche nach einer saubereren Lösung.

Antwort

1

Zuerst verwenden Sie nicht any, da Sie mit tun werden, deshalb verwenden Sie get.

Sie suchen wahrscheinlich nach ? (optionaler Parameter). Sie hätten gewusst, wenn Sie documentation lesen, anstatt hier zu fragen.

Route::get('{slug?}/{another?}', '[email protected]'); 

show($slug = null, $another = null) {} 
// or use Request $request 

Hinweis: nicht mischen ' und " sieht es lächerlich


suchen, bevor er fragte