[英]Laravel: Getting Route Parameters in Route::group() Closure
我有一個在Laravel 4.2上運行的應用程序,並且我正在嘗試實現某種復雜的路由機制。 我使用以下方法設置了路由組:
Route::group(['domain' => '{wildcard}.example.com'], $closure);
我需要能夠檢查該組閉包中的$ wildcard參數-這意味着在將請求傳遞給控制器之前(我需要根據子域定義Route::get()
和Route::post()
)。
我想做的一個例子如下:
Route::group(['domain' => '{wildcard}.example.com', function ($wildcard) {
if ( $wildcard == 'subdomain1' ) {
Route::get('route1', 'Subdomain1Controller@getRoute1');
Route::get('route2', 'Subdomain1Controller@getRoute2');
} else if ( $wildcard == 'subdomain2' ) {
Route::get('route1', 'Subdomain2Controller@getRoute1');
Route::get('route2', 'Subdomain2Controller@getRoute2');
}
}
);
當然,以上方法不起作用。 傳遞給Route::group()
閉包的唯一參數是Router
的實例,而不是數組中定義的參數。 但是, 必須有一種訪問這些參數的方法-我知道我之前已經做過,但我只是不記得怎么做(並且無法在線找到解決方案)。
我知道我總是可以使用PHP的較低層方法來檢索URL,對其進行explode()
並以這種方式檢查子域。 但是我在使用Laravel的方法之前就已經做到了,如果可能的話,我寧願那樣做(保持事物的清潔和一致)
還有其他人知道解決方案嗎? 提前致謝!
使用Route::input()
函數:
Route::group(['domain' => '{wildcard}.example.com', function ($wildcard) use ($wildcard) {
if ( Route::input('wildcard') === 'subdomain1' ) {
Route::get('route1', 'Subdomain1Controller@getRoute1');
Route::get('route2', 'Subdomain1Controller@getRoute2');
} else {
Route::get('route1', 'Subdomain2Controller@getRoute1');
Route::get('route2', 'Subdomain2Controller@getRoute2');
}
}
);
請參閱docs中的 “訪問路由參數值”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.