簡體   English   中英

Laravel:在Route :: group()閉包中獲取路由參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM