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だけをキャプチャする他の(より簡単な)方法があることは理解していますが、この方法でそれを行う特定の理由があり、さらに、ここでルーターで何が間違っているのかを理解したい.
ありがとう!