Lumen (Laravel) 路由未将路由参数传递给控制器
Lumen (Laravel) routing not passing route parameter to controller
我在使用 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,但我有这样做的特定原因,此外,我想了解我在这里对路由器做错了什么。
谢谢!
控制器方法上的类型提示将使您的变量成为 "go empty"。根本不要输入提示。您的闭包方法没有类型提示,但您的控制器方法有。
我在使用 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,但我有这样做的特定原因,此外,我想了解我在这里对路由器做错了什么。
谢谢!
控制器方法上的类型提示将使您的变量成为 "go empty"。根本不要输入提示。您的闭包方法没有类型提示,但您的控制器方法有。