繁体   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