2015-02-10 70 views
1

我試圖將路由過濾器應用於除主頁之外的所有路由。我不喜歡這樣寫道:使用正則表達式作爲路由名稱應用Laravel過濾器

Route::whenRegex('/^\/[\S]+/', 'myFilter'); 

所以,基本上,我說:匹配所有開始/路線,其次是任何非空白字符(S)。但是,該過濾器不起作用。

過濾器本身:

Route::filter('myFilter', function() { 
    if (Session::has('userRegState')) { 
     return Redirect::action('[email protected]'); 
    } 
}); 

我檢查它 - userRegState會話變量設置,但沒有重定向完成。過濾器中使用的正則表達式是否錯誤?

+0

使用不同的分隔符。 – 2015-02-10 15:03:57

+1

我已經嘗試過'#...#'和'%...%'。沒有成功。 – lesssugar 2015-02-10 15:05:26

+0

@lesssugar此路線的目的是什麼?用戶多長時間輸入URL中的空格字符? – silkfire 2015-02-10 15:15:29

回答

0

好的,似乎可能會在Laravel的路由邏輯中完成某種正斜槓剝離,這使得我的模式不符合它的要求。爲了解決它,我省略了正斜槓。

取而代之的是:

Route::whenRegex('/^\/[\S]+/', 'myFilter'); 

我這樣做:

Route::whenRegex('/^\S{2}/', 'myFilter'); 

最後的正則表達式匹配以至少2個非空白字符開始。在我的情況下,它是正斜槓後跟任何非空白字符,如/a,/page2等。