2017-03-02 41 views
2

我正在尋找實施白平臺解決方案,以我的平臺和需要實現通配符子域或系統,唯一的問題是我們的系統坐在一個子域的自我。所以我需要過濾出任何涉及特定子域的內容。Laravel Wildcard子域爲用戶

// *.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]'); 

但是使用上面的代碼,我得到的錯誤:

Undefined variable: element

我將如何避免這個錯誤?

回答

2

一個好方法是使用模式排除「我的」。把這段代碼在你的路由文件的頂部:

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

或者,也可以在你的RouteSericeProvider的引導()部分去。爲了給你一個可行的解決方案,你的代碼變得以下(您可以稍後整理!)

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

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

的另一種方式是{}元素匹配的路由前相匹配的「我」的路線。然而,儘管很多人這樣做,但我認爲如果在評論中沒有明確解釋路線的排序,可能難以維持。

+1

謝謝你的工作,我更新了我的代碼,因爲my.website.co.uk的路由也坐在同一個開發中。 Route ::模式適用於Route ::組,然後其他路徑仍然適用於my.website.co.uk域。再次感謝 –