Lumen(Laravel)路由不将路由参数传递给控制器

时间:2015-04-27 20:01:14

标签: laravel-5 laravel-routing lumen

我在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,但我有一个特定的理由这样做,而且,我想了解我在路由器上做错了什么这里。

谢谢!

1 个答案:

答案 0 :(得分:0)

控制器方法上的类型提示将使您的变量"变为空白"。只是不要输入提示。你的闭包方法没有类型提示,但你的控制器方法没有。