我的所有请求都以前缀开头,因此我创建了具有多个端点的路由组:
routes / web.php
Route::group(array('prefix' => $prefix), function() {
Route::get("/test/test2/{lang}", ['uses' => 'TestController@test2']);
...
});
Controller:
class TestController {
public function test2(Request $request, $lang) {}
}
使用以下测试网址:
domain.com/customprefix/test/test2/en
我到达控制器并可以访问$lang
(= en)。但是如何将$prefix
传递给控制器方法? (在此示例中,该值应为“ customprefix”)
很遗憾,我没有在文档或API规范中找到关于此的信息。
您可以通过路由器从应用程序容器中获取当前路由对象来获得此信息:
/** @var \Illuminate\Routing\Router $router */
$router = app('router');
$prefix = $router->getCurrentRoute()->getPrefix();
您是否已尝试使用路由前缀? 。如果没有,那么它应该看起来像这样
public function test2(Request $request, $lang){
dd($request->route()->getPrefix());
}
在您的Controller
中,您可以获取前缀作为以下解决方案之一:
1.With $reques
:
public function TestController(\Illuminate\Http\Request $request)
{
$request->route()->getPrefix();
}
2。没有$request
:
$this->getRouter()->getCurrentRoute()->getPrefix()