2017-04-13 58 views
0

不同控制器予有需要的服务的多个域,例如,firstdomain.com,seconddomain.com,thirddomain.com一个Laravel应用。不论域名如何,逻辑层保持不变,但演示文稿会发生变化。因此,我想为每个域调用一组不同的控制器。我怎样才能做到这一点?Laravel:选择每个请求主机

我创建了一个中间件,获取值$_SERVER['HTTP_HOST']并将其设置为请求对象上的一个属性,但我不确定该从哪里去。理想情况下,我会将它设置为一组控制器的名称空间前缀。

+1

我已经更新了下面的答案,以在一个应用程序中工作。一点题外话,有没有必要写一个自定义的中间件皮卡域到请求,它已经可以作为:'支持::服务器(“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,这正是我一直在寻找.. 。 –