2017-04-13 12 views
0

私はfirstdomain.com、seconddomain.com、thirddomain.comなど、複数のドメインにサービスを提供するLaravelアプリケーションを用意しています。論理層はドメイン名とは関係なく同じままですが、プレゼンテーションは変更されます。したがって、私は各ドメインごとに異なるコントローラセットを呼びたいと思っています。これどうやってするの?Laravel:リクエストホストごとに異なるコントローラを選択してください

私は$_SERVER['HTTP_HOST']の値を取得し、それをリクエストオブジェクトの属性として設定するミドルウェアを作成しましたが、そこからどこに行くのかはわかりません。理想的には、コントローラのグループの名前空間接頭辞として設定します。

+1

以下の回答を1つのアプリケーションで動作するように更新しました。 'Request :: server( 'HTTP_HOST')' – Cyril

答えて

2

ドメインの実装が異なるグループでコントローラをグループ化できます。あなたはまた、共通のコントローラが共有していることがあります。

// Common route 
Route::get('about', '[email protected]'); 

// Diverge by domain 
Route::group(['domain' => 'foodomain.com'], function() { 
    Route::resource('task', 'FooTaskController'); 
}); 

Route::group(['domain' => 'bardomain.com'], function() { 
    Route::resource('task', 'BarTaskController');  
}); 

Route::group(['domain' => 'loldomain.com'], function() { 
    Route::resource('task', 'LolTaskController'); 
}); 

またこれらのコントローラは、任意の共有ロジックは行くだろう共通の親Controllerクラスから継承する可能性があり

<?php 

namespace App\Http\Controllers; 

class FooTaskController extends TaskController 

(...)

class BarTaskController extends TaskController 

(etc ...)

あなたのビューはdom ain:

\app 
\bootstrap 
\resources 
    \assets 
    \lang 
    \views 
     \foo 
      task.blade.php 
      home.blade.php 
     \bar 
      task.blade.php 
      home.blade.php 
     \lol 
      task.blade.php 
      home.blade.php 
+0

ありがとうtech1000、それはまさに私が探していたものです。 。 –

関連する問題