2016-05-21 18 views
0

私のサブドメインはgetDataに、コントローラに代わり$id valueの私はサブドメイン値(dev1dev2dev3)を取得していますルート変数としてサブドメインを作成せずに、laravelの複数のサブドメインを許可しますか?

> Route::group(array('domain' => '{account}.myapp.com'), function() { 
> Route::get('/get_data/{id?}', '[email protected]'); 
> }) 

、laravelコントローラに最初のパラメータに問題を起こしたコードの下に使用

domain1 = dev1.myapp.com, 
domain2 = dev2.myapp.com, 
domain3 = dev3.myapp.com 
... 

です方法。コントローラの各メソッドの最初のパラメータとしてサブドメインをすることなく、すべてのサブドメインを許可するように自分のコードを更新する方法

あなたのアイデアを共有してください。

+0

にそれを使用する次に、あなたのmiddlewareKernel.php

'subdomain' => \App\Http\Middleware\SubDomainAccess::class, 

を登録します。 – Rifki

+0

@RifkiAriaGumelar:あなたはコントローラのメソッド 'getData'を意味していますか? – gaurav

+0

どこにでも '$ account'は必要ありませんので、私はすべてのサブルートに含める必要がありますか? – gaurav

答えて

2

あなたは、コントローラのメソッドに{account}変数を使用したくないので、あなたが変数に自分のルートを定義し、各サブドメイングループに渡すことができ、ここでの例です:

$subdomainRoutes = function() { 
    Route::get('get_data/{id?}', function ($id) { 
     // 
    }); 
}; 

Route::group(['domain' => 'dev1.myapp.com'], $subdomainRoutes); 
Route::group(['domain' => 'dev2.myapp.com'], $subdomainRoutes); 
Route::group(['domain' => 'dev3.myapp.com'], $subdomainRoutes); 

EDIT

namespace App\Http\Middleware; 

use Closure; 

class SubDomainAccess 
{ 
    /** 
    * Handle an incoming request. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param \Closure $next 
    * @return mixed 
    */ 
    public function handle($request, Closure $next) 
    { 
     $server = explode('.', $request->server('HTTP_HOST')); 
     $subdomain = $server[0]; 

     // check if sub domain exists, replace with your own conditional check 
     if (! Account::where('slug', $subdomain)->first()) { 
      return abort(404); // or redirect to your homepage route. 
     } 

     return $next($request); 
    } 
} 
:あなたのサブドメインは、あなたがmiddlewareを使用することができ、ダイナミックであれば

、のようなミドルウェアのものを作成

あなたのモデルにバインド `{アカウントを}`ていることを確認してくださいあなたのroutes.php

Route::group(['middleware' => 'subdomain'], function() { 
    Route::get('/get_data/{id?}', '[email protected]'); 
}); 
+0

'dev1'、' dev2'& 'dev3'はすべて動的であり、このようにもっと多くのアカウントがあります。 – gaurav

+0

編集した回答を見る – Rifki

関連する問題