Laravel 5 流明(Laravel)布线未将布线参数传递给控制器

Laravel 5 流明(Laravel)布线未将布线参数传递给控制器,laravel-5,laravel-routing,lumen,Laravel 5,Laravel Routing,Lumen,我对Lumen的路线有点问题。我试图在路由中使用正则表达式捕获uri 当我尝试将捕获的数据传递给控制器方法时,变量是空的,但是当我使用闭包执行相同操作时,变量显示为预期值。代码如下: 这项工作: $app->get('{categoryUrlPath:[a-zA-Z0-9\-\/]+}', function($categoryUrlPath) { echo $categoryUrlPath; }); 这不起作用: $app->get('{categoryUrlPath:[a-z

我对Lumen的路线有点问题。我试图在路由中使用正则表达式捕获uri

当我尝试将捕获的数据传递给控制器方法时,变量是空的,但是当我使用闭包执行相同操作时,变量显示为预期值。代码如下:

这项工作:

$app->get('{categoryUrlPath:[a-zA-Z0-9\-\/]+}', function($categoryUrlPath) {
  echo $categoryUrlPath;
});
这不起作用:

$app->get('{categoryUrlPath:[a-zA-Z0-9\-\/]+}', ['uses' => 'App\Http\Controllers\FrontController@showSearch']);
在控制器内部:

public function showSearch($categoryUrlPath) {
    return $categoryUrlPath;    
}
使用调试控制器的showSearch方法

print_r(app('request')->route());
显示变量是否存在:

Array ( [0] => 1 [1] => Array ( [uses] => App\Http\Controllers\FrontController@showSearch ) [2] => Array ( [categoryUrlPath] => this/is/a/captured/uri ) ) 
但它仍然没有作为$categoryUrlPath传递

感谢您的帮助,我很困惑。此外,我意识到还有其他(更容易)的方法来捕获URI,但我有一个这样做的具体原因,此外,我想了解我在这里对路由器做了什么错误


谢谢

在控制器方法上键入提示将使变量“变为空”。只是不要键入提示。你的闭包方法没有类型提示,但你的控制器方法有。

我注意到一件事。。。两个
$app-get()
表达式不相同。具体来说,一个上有一个前导的
/
,而另一个上没有。这可能就是问题所在(假设不是打字错误)。嗨,谢谢你的建议。不幸的是,这没有什么区别。结果是一样的。嗨,谢谢你的建议,但是删除类型提示对测试没有影响。仍然没有通过。奇怪的是,当我再次尝试时,结果有所不同:类型提示确实会使控制器变量“变为空”。老实说,我没有做太多研究,但我遇到了与您相同的问题,解决方法完全相同,我想这肯定与IoC的工作方式有关。然而,现在我们至少知道类型暗示会杀死默认值。