【发布时间】:2015-07-22 02:51:49
【问题描述】:
我有一个在 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 的方法之前已经这样做了,如果可能的话,我更愿意这样做(以保持事情的干净和一致)
还有其他人知道解决方案吗?提前致谢!
【问题讨论】:
-
你不能那样做。路由组在分派请求之前运行。
-
我很确定我过去做过,除非我快疯了。实际上,我清楚地记得做它,我只是不记得是怎么做的。无论哪种方式,我决定不担心它,只是使用
parse_url()破解了一个解决方法。谢谢!