2016-01-16 34 views
8

我需要一個laravel 5.2 routes.php條目,它可以捕獲網站的特定域名/premium-section的所有流量,以便我可以提示用戶成爲會員在訪問優質內容之前。如何在Laravel 5.2中創建Catch-All Route

我會回答我自己的問題〜希望人們可以使用此信息。

回答

2
  1. 在應用程序/ HTTP/routes.php文件創建,將捕獲所有流量中domain.com/premium-section/anywhere/they/try/to/go並試圖找到並執行匹配功能的路由在PremiumSectionController內
  2. 但沒有任何匹配的方法,只是一個全部。

    Route::group(['as' => 'premium-section::', 
           'prefix' => 'premium-section', 
           'middleware' => ['web']], 
           function(){ 
           Route::any('', '[email protected]'); 
           Route::controller('/', 'PremiumSectionController'); 
    
           }); 
    

namespace App\Http\Controllers; 

    use ... 

    class PremiumSectionController extends Controller{ 

     public function premiumContentIndex(){ 
      return 'no extra parameters'; 
     } 

     //magically gets called by laravel 
     public function missingMethod($parameters = array()){ 
      return $parameters; 
     } 

    } 
+0

這是一個答案? – lagbox

+0

雅,它爲我工作。 –

+0

,這樣路線就會抓住'domain.com/premium-section/anywhere/they/try/to/go'? – lagbox

19

你也可以通過在參數上使用正則表達式來捕捉'all'。

Route::group(['prefix' => 'premium-section'], function() { 
    // other routes 
    ... 
    Route::get('{any}', function ($any) { 
     ... 
    })->where('any', '.*'); 
}); 

如果沒有可選參數定義路由,也可以捕獲整個組。

Route::get('{any?}', function ($any = null) { 
    ... 
})->where('any', '.*'); 

最後一個也會出現'domain.com/premium-section'。

+1

感謝您的回答。我想知道爲什麼Laravel沒有被編碼爲使用簡單的'Route:any('*')'! – PHPst