2017-04-13 8 views
0

Ich habe eine Laravel-Anwendung, die mehrere Domänen, zum Beispiel firstdomain.com, seconddomain.com, thirddomain.com, bedienen muss. Die Logikschicht bleibt unabhängig vom Domänennamen gleich, aber die Präsentation ändert sich. Daher möchte ich für jede Domäne eine andere Gruppe von Controllern aufrufen. Wie kann ich das machen?Laravel: Wählen Sie verschiedene Controller für jeden Anfrage-Host

Ich habe eine Middleware erstellt, die den Wert $_SERVER['HTTP_HOST'] erhält und es als Attribut für das Anforderungsobjekt festlegt, aber ich bin nicht sicher, wohin ich von dort gehen soll. Im Idealfall würde ich es als Namespace-Präfix für eine Gruppe von Controllern festlegen.

+1

Ich habe die Antwort unten aktualisiert, um in einer Anwendung zu arbeiten. Als Nebenbemerkung gibt es keine Notwendigkeit, eine benutzerdefinierte Middleware zu schreiben, um die Domain in die Anfrage aufzunehmen, sie ist bereits verfügbar als: 'Request :: server ('HTTP_HOST')' – Cyril

Antwort

2

Sie können Ihre Controller in Gruppen gruppieren, in denen sich ihre Domänenimplementierungen unterscheiden. Sie können auch gemeinsame Controller geteilt:

// 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'); 
}); 

Sie auch diese Controller erben von einer gemeinsamen Mutter Controller Klasse, wo jede gemeinsame Logik

<?php 

namespace App\Http\Controllers; 

class FooTaskController extends TaskController 

(...)

haben könnten, würde gehen
class BarTaskController extends TaskController 

(etc ...)

Ihre Ansichten können auch von dom organisiert werden 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

Danke tech1000, das ist genau das was ich gesucht habe .. . –

Verwandte Themen