2013-07-05 4 views
9

Wenn Sie eine Route in Laravel 4 definieren, ist es möglich, mehrere URI-Pfade innerhalb derselben Route zu definieren?mehrere Routen in einer einzigen Route :: get() Call Laravel 4

derzeit tun ich die folgende:

Route::get('/', '[email protected]'); 
Route::get('/dashboard', array('as' => 'dashboard', 'uses' => 'v1\[email protected]')); 

aber diese meine Absicht besiegt, würde Ich mag, etwas tun wie

Route::get('/, /dashboard', array('as' => 'dashboard', 'uses' => '[email protected]')); 
+5

Persönlich würde ich es vorziehen, zu umleiten '/' auf '/ dashboard' (oder vice -versa) Warum haben zwei URLs für SEO und Einfachheit den genau gleichen Inhalt? –

+0

@Alexandre Danault In einigen Fällen möchten Sie den Inhalt Ihrer Ansicht basierend auf der Route (leicht) variieren und gleichzeitig Anfragen mit einem einzigen Controller bearbeiten (dh nicht die gesamte Logik in 3 verschiedenen Fällen wiederholen) Controller-Methoden). – Alex

Antwort

2

Wenn ich Ihre Frage richtig verstanden würde ich sagen:

Verwenden Sie Route Prefixing: http://laravel.com/docs/routing#route-prefixing

Oder (Optional) Routenparameter: http://laravel.com/docs/routing#route-parameters

So zum Beispiel:

Route::group(array('prefix' => '/'), function() { Route::get('dashboard', '[email protected]'); }); 

ODER

Route::get('/{dashboard?}', array('as' => 'dashboard', 'uses' => '[email protected]')); 
+11

Das zweite Beispiel wird mit beliebigen URLs übereinstimmen, z. '/ foo' diese Antwort ist falsch – Moak

20

Ich glaube, Sie einen optionalen Parameter mit einem regulären Ausdruck verwenden müssen:

Route::get('/{name}', array(
    'as' => 'dashboard', 
    'uses' => '[email protected]') 
    )->where('name', '(dashboard)?'); 

* Angenommen, Sie wollen zum selben Controller routen, was aus der Frage nicht ganz klar ist.

* Die aktuell akzeptierte Antwort entspricht nicht nur / OR /dashboard.

+3

2 Jahre danach ist diese Frage noch relevant. Ist es möglich, den Fall mit mehr als zwei Routen zu bearbeiten? Ex: gleicher Controller zu "/", "/ Dashboard" und "/ home"? Können wir den optionalen Parameter auf "Home" und "Dashboard" weiter einschränken? – Alex

+0

@Alex Frage ist relevant. Gibt es bisher eine Lösung? –

3

Ich finde es interessant für Neugier willen diese Frage, indem @ Alex als Kommentar unter @graemec eine Lösung zu schreiben geschrieben zu lösen, um zu versuchen, die funktioniert:

Route::get('/{name}', [ 
    'as' => 'dashboard', 
    'uses' => '[email protected]' 
    ] 
)->where('name', 'home|dashboard|'); //add as many as possible separated by | 

Da das zweite Argument von where() reguläre Ausdrücke erwartet so können wir es zuweisen, um genau irgendwelche von denen durch | getrennt zu decken, so dass mein Gedanke von vielleicht mit whereIn() wird dadurch gelöst.

PS: In diesem Beispiel wird auf Laravel getestet 5.4.30

Hoffnung jemand findet es nützlich