我有一个需要为多个域提供服务的Laravel应用程序,例如firstdomain.com,seconddomain.com,thirddomain.com。无论域名如何,逻辑层都保持不变,但演示文稿会发生变化。因此,我想为每个域调用一组不同的控制器。我怎么能这样做?
我创建了一个中间件,它获取$_SERVER['HTTP_HOST']
的值并将其设置为请求对象的属性,但我不确定从那里开始。理想情况下,我会将其设置为一组控制器的命名空间前缀。
答案 0 :(得分:2)
您可以将控制器分组到其域实现不同的组中。您可能还共享了通用控制器:
// Common route
Route::get('about', 'ContentController@about');
// 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
(等...)
您的观点也可以按域进行整理:
\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