2017-03-02 7 views
2

Ich bin auf der Suche nach einer Whitelabel-Lösung für meine Plattform und müssen Wildcard-Subdomains für oder System zu implementieren, das einzige Problem ist unser System sitzt auf einer Subdomain selbst. Also muss ich alles filtern, was zu einer bestimmten Subdomain kommt.Laravel Wildcard-Subdomain für Benutzer

// *.website.co.uk 
Route::group(['domain' => '{element}.website.co.uk'], function() { 
    Route::get('/', function ($element) { 
     dd($element); 
    }); 
}); 

// my.website.co.uk 
Route::get('/', '[email protected]'); 
Route::post('/', '[email protected]'); 

Verwendung jedoch den Code oben ich den Fehler:

Undefined variable: element

Wie würde ich diesen Fehler zu vermeiden?

Antwort

2

Ein guter Weg ist, 'mein' mit einem Muster auszuschließen. Setzen Sie diesen Code am Anfang Ihrer Routen-Datei:

Route::pattern('element', '(?!^my$)'); 

Alternativ dass im Kofferraum() Abschnitt Ihrer RouteSericeProvider gehen kann. Um Ihnen eine funktionierende Lösung, Ihren Code die folgende wird (Sie können später aufzuräumen!)

Route::pattern('element', '(?!^my$)'); 

Route::group(['domain' => '{element}.website.co.uk'], function() { 
    Route::get('/', '[email protected]'); 
    Route::post('/', '[email protected]'); 
}); 

Eine alternative Möglichkeit ist es, die ‚mein‘ Route übereinstimmen, bevor Sie {element} Route entspricht. Während viele dies tun, denke ich, dass es schwieriger sein könnte zu warten, wenn die Reihenfolge der Routen in den Kommentaren nicht klar erklärt wird.

+1

Vielen Dank das hat funktioniert, ich habe meinen Code aktualisiert, da die Routen für my.website.co.uk auch auf der gleichen Entwicklung sitzen. Das Route :: -Muster funktioniert für die Route :: -Gruppe, und dann funktionieren die anderen untergeordneten Routen immer noch für die Domäne my.website.co.uk. Danke noch einmal –