2016-01-08 4 views
0

Я хочу иметь разные домены для моего приложения на основе среды;Среда Laravel в маршруте

Вроде так; www.prod.co.uk и www.dev.co.uk Теперь в моем route.php Я определил подобласти;

Route::group(['domain' => 'www.prod.co.uk'] 
Route::group(['domain' => 'blog.prod.co.uk'] 
Route::group(['domain' => 'careers.prod.co.uk'] 

В документации laravel вы можете получить доступ к env основанный на том, что ваш иметь в своем .env я могу сделать что-то вроде ниже моей route.php?

Use App; 

if (App::environment('production')) { 
    // The environment is local 
    $domain = www.prod.co.uk; 
    $subdomain1 = blog.prod.co.uk; 
    $subdomain2 = careers.prod.co.uk; 
} 

if (App::environment('local', 'staging')) { 
    // The environment is either local OR staging... 
    $domain = www.dev.co.uk; 
    $subdomain1 = blog.dev.co.uk; 
    $subdomain2 = careers.dev.co.uk; 
} 


Route::group(['domain' => $domain] 
Route::group(['domain' => $subdomain1] 
Route::group(['domain' => $subdomain2] 
+0

'Use App;' даст вам синтаксическую ошибку и не понадобится в файле 'routes.php'. Но да, эта основная идея выполнима. – ceejayoz

ответ

5

приятнее (ИМХО) способ сделать это было бы определить свои собственные домены в .env файлов - таким образом, ясно, что доменные имена в различных средах и не будет необходимости в какой-либо " если:

.env:

URL=www.dev.co.uk 
SUBDOMAIN1=blog.dev.co.uk 
SUBDOMAIN2=careers.dev.co.uk 

Затем добавьте в конфиг/app.php:

'url' => env('URL'), 
'subdomain1' => env('SUBDOMAIN1'), 
'subdomain2' => env('SUBDOMAIN2'), 

routes.ph p станет проще и приятнее читать:

Route::group(['domain' => Config::get('app.url')] {} 
Route::group(['domain' => Config::get('app.subdomain1')] {} 
Route::group(['domain' => Config::get('app.subdomain2')] {} 

PS. Представьте себе, если в будущем вы получите больше URL-адресов, специфичных для конкретной среды - ваши route.php будут раздуты и будут (на самом деле, фактически) содержать данные, зависящие от среды, что не очень приятно!

+0

Привет, Не думайте, что мне нужно использовать 'config ...' Мы можем обращаться к ним следующим образом: 'env ('URL')' –

+0

Я думаю, что это не рекомендуется. Это упоминается где-то в документации 5.2, насколько я помню, это связано с кэшированием конфигураций. Кроме того, это гораздо более агностично - что, если в будущем вы решите сохранить конфигурации в базе данных вместо файлов .env? Использование env() заставляет вас застревать в файлах среды. –

+0

Я пробовал ваш метод, и я получил ошибку в том, что не нашел «route» –

Смежные вопросы