前一段时间已经学习了laravel 5.2,但以前从未使用过子域。
目前我有:
Route::group(['middleware' => ['web']], function () {
//Login/Logout
Route::get('/', 'Auth\AuthController@getLogin');
Route::get('/auth/login', 'Auth\AuthController@getLogin');
Route::post('/auth/login', 'Auth\AuthController@postLogin');
Route::get('/logout', 'Auth\AuthController@logout');
});
问题是,如果我想获取一个子域(如果存在的话),我也不知道如何将它传递到中间件组中的
'/'
路由。许多子域路由教程似乎不包括/引用中间件web(因为我在页面上有表单,还需要此功能)。
Route::group(['middleware' => ['web']], function () {
//Login/Logout
Route::get('/', 'Auth\AuthController@getLogin');
Route::get('/auth/login', 'Auth\AuthController@getLogin');
Route::post('/auth/login', 'Auth\AuthController@postLogin');
Route::get('/logout', 'Auth\AuthController@logout');
});
Route::group(['domain' => '{account}.myapp.com'], function () {
Route::get('/}', function ($account) {
//Doesn't work
});
});
不起作用。我只想得到子域名(如果存在),并把它通过,所以我可以记得它在我的登录视图。
最佳答案
这是我使用的方法。我在web
中间件中包装所有路由,并在home
中间件中包装除about
、auth
等公共页之外的大多数其他路由。从那里,我可以抓住可变子域最后,在任何恒定的子域(如果适用)。
// Encapsulate all routes with web middleware
Route::group(['middleware' => 'web'], function () {
// Include auth routes
Route::auth();
// These routes are require user to be logged in
Route::group(['middleware' => 'auth'], function () {
// Constant subdomain
Route::group(['domain' => 'admin.myapp.localhost.com'], function () {
// Admin stuff
});
// Variable subdomains
Route::group(['domain' => '{account}.myapp.localhost.com'], function () {
// Homepage of a variable subdomain
Route::get('/', function($account) {
// This will return {account}, which you can pass along to what you'd like
return $account;
});
});
});
// Public homepage
Route::get('/', function () {
// Homepage stuff
});
});
它与我的设置很好,所以我希望它能帮助你找到解决方案。