2013-09-04 11 views
19

Powiedzmy mam następujące:Czy mogę grupować wiele domen w grupie routingu w Laravel?

Route::group(array('domain' => array('admin.example.com')), function() 
{ 
    ... 
}); 

Route::group(array('domain' => array('app.example.com')), function() 
{ 
    ... 
}); 

Route::group(array('domain' => array('dev.app.example.com')), function() 
{ 
    ... 
}); 

Czy istnieje jakiś sposób, aby mieć wiele domen podzielić grupę routingu? Coś takiego:

Route::group(array('domain' => array('dev.app.example.com','app.example.com')), function() 
{ 
    ... 
}); 

Odpowiedz

40

Laravel nie wydaje się tego wspierać.

Nie jestem pewien, dlaczego nie myślałem o tym wcześniej, ale myślę, że jednym z rozwiązań byłoby zadeklarowanie tras w oddzielnej funkcji, jak przekazanie ich obu grupom tras.

Nie jestem pewien, czy ma to znaczący wpływ na wydajność tego rozwiązania.

+0

Czy ktoś kiedykolwiek zastanawiał się, jaki wpływ ma to na wydajność? – FooBar

+0

Dzięki za to. Myślę, że nie ma to wpływu na wydajność, ponieważ po prostu przechowujesz go w zmiennej tablicowej i po prostu dopełniasz ją do deklaracji 2. Twoje zdrowie! – marknt15

+1

Dzięki temu przydało mi się ... –

1

Obecnie nie można. Miałem ten sam "problem"; moja poprawka polega na przełączaniu twoich subdomen na foreach i rejestrowaniu tras.

4

Zainteresowany tym również! Próbuję zarejestrować lokalną trasę rozwoju subdomena rozwoju + dla jednej akcji kontrolera.

tj

# Local Dev 
Route::group(array('domain' => "{subdomain}.app.dev"), function() { 
    Route::get('/{id}', '[email protected]'); 
}); 

# Production Server 
Route::group(array('domain' => "{subdomain}.app.com"), function() { 
    Route::get('/{id}', '[email protected]'); 
}); 

Próbowałem:

# Failed 
Route::group(array('domain' => "{account}.app.{top_level_domain}"), function() { 
    Route::get('/{id}', '[email protected]'); 
}); 

Ale nie udało się.

Nie jest to ogromny problem, jak DesignerGuy wymienić można po prostu przejść w funkcji obu dróg - ale byłoby to po prostu bardziej elegancki, czy mogą być grupowane :)

+0

Próbuję rozwiązać podobny problem. Mianowicie, aby mieć "ui.domain.com" i "api.domain.com" w produkcji, a jednocześnie pozwolić zespołowi programistycznemu mieć "ui.domain.local" i "api.domain.local" dla ich lokalnego rozwoju środowiska. Obsługa dzikiej karty po subdomenie wystarczy. Podstawowym problemem jest to, że staram się rozwiązać, aby rozwiązać sprzeczne trasy. Na przykład ui.domena.com/komunikaty powinny zwracać HTML, a api.domena.com/komunikaty powinny zwracać JSON. zatem dwie grupy o 'domeny' => 'API. (: Dowolny)' i 'domeny' => 'UI. (: Dowolny)' byłby idealny –

0

zobaczyć ten link. http://laravel.com/docs/routing#sub-domain-routing

Route::group(array('domain' => '{subdomain}.example.com'), function() 
{ 
    ... 
}); 

lub Użyj tego pakietu.

https://github.com/jasonlewis/enhanced-router

pomóc gdzie można ustawić na grupy routingu tak.

Route::group(array('domain' => '{maindomain}'), function() 
{ 
    ... 
})->where('maindomain', '.+\.example\.com$'); 
+0

to nie działa Route::group(array('domain' => '{maindomain}'), function() { ... })->where('maindomain', '.+\.example\.com$'); Ivan

2

zameldowanie laravel docs, jeśli główną domeną jest MojaApl, w produkcji jest myapp.com iw środowisku lokalnym jest myapp.dev spróbuj użyć *

Route::group(array('domain' => '{subdomain}.myapp.*'), 
function() 
{ 
    ... 
}); 
9

laravel 5,1

 

Route::pattern('subdomain', '(dev.app|app)'); 
Route::group(['domain' => '{subdomain}.example.com'], function() { 
    ... 
}); 
 
 

Route::pattern('subdomain', '(dev.app|app)'); 
Route::pattern('domain', '(example.com|example.dev)'); 
Route::group(['domain' => '{subdomain}.{domain}'], function() { 
    ... 
}); 
 
+5

Jest to świetna wskazówka. Pamiętaj jednak, że parametr domain zostanie przekazany jako pierwszy parametr wszystkich ścieżek podrzędnych: 'Route :: get ('users/{id}', 'UsersController @ show'); // id = "example.com"; ' Aby tego uniknąć zawsze możesz użyć zmiennych środowiskowych: ' $ domena = env ('BASE_DOMAIN', 'przyklad.com'); Trasa :: grupa (['domena = =' subdomena. '. $ Domena], funkcja() { ... }); ''; –