2017-09-10 13 views
1

Laravel 5.5では、サブドメイン名に大きく依存する新しいアプリケーションを構築しています。サブドメイン名をLaravelのコントローラとビューに効率的に渡す方法

サブドメインルーティングのルートグループを設定できましたが、最終的にはすべてのコントローラとすべてのビューでサブドメイン名変数を使用できるようにする必要があります。

私は既にカスタムView Composerを持っています。ここでは、すべてのビューにセッション変数を渡します。 View Composerでサブドメイン名を使用できるようにするにはどうすればよいですか?私は、Requestオブジェクトを通してサブドメインにアクセスできるとは思わない。

また、どの方法でもパラメータを指定する必要なく、すべてのコントローラとそのメソッドにサブドメイン名を渡すことは可能ですか?

は現在、私のルーティングは次のようになります。

Route::domain('{sub}.something.com')->group(function() { 
Route::prefix('admin')->group(function ($sub) { 
    Route::get('/', '[email protected]')->name('admin.route1'); 
    Route::get('/route2', '[email protected]')->name('admin.route2'); 
    Route::post('/', '[email protected]')->name('admin.route3'); 
/snip 

しかし、この方法は、私が

public function method($sub){} 

としてさらに悪いことに、すべてのコントローラメソッドを定義する必要があり、すべての名前のルートを呼び出し、$のサブパラメータを渡します

public function method($sub){ 
    if(Sentinel::check()){ 
     return redirect()->route('admin.route1',$sub); 
    } else { 
     return view('admin.route2')->with('sub',$sub); 
    } 
} 

およびビュー:

{{ route('admin.route1',$sub) }} 

私は本当にビューにし、コントローラに$サブ変数を渡す必要があるが、私は本当にのView Composerを使用することによって、それを自動化することを好むだろう場合、私は理解して:

public function __construct() 
{ 
    $this->user = session('user'); 
    $this->userdata = session('userdata'); 
    $this->permissions = session('permissions'); 
} 


public function compose(View $view) 
{ 
    $view->with(['user' => $this->user, 'userdata' => $this->userdata, 'permissions' => $this->permissions]); 
} 

それでは、どのようにします

$this->subdomain = $sub_from_somewhere 

これは私のView Composerに$ subを渡していますか?サブドメインロジックを使用してアプリケーションを構築するための効率的な方法が見つかりませんでした。

ありがとうございました。

答えて

0

ヘルパー関数request()を使用すると、現在のすべてのリクエストパラメータにアクセスできます。あなたのケースでは、そのようなあなたのブレードで「サブ」の値にアクセスすることができます。

{{request("sub")}} 
0

これはシンプルなソリューションです:

Route::current()->parameter('sub') 

あなたがコントローラでこれを使用するか、ビューに渡すことができます。

関連する問題