我有一个看起来像这样的路由:
Route::namespace('Api\HelpGuides')->prefix('help')->group(function () {
Route::get('/{userInput}', 'FetchArticlesController')
->where('userInput', '.*');
});看起来像这样的控制器:
public function __invoke(Request $request, string $userInput) ...我希望能够捕获$userInput,因此如果我收到来自前端的请求,则如下所示:
/api/help/anything/could/be/in/here?including=params我可以在FetchArticlesController中使用。
当我在控制器中转储$userInput时,我得到了查询字符串之前的所有内容,所以在上面的示例中,它转储了
/anything/could/be/in/here有没有一种方法可以让它在我定义的路由之后把所有的东西都转储出去?例如,在/api/help/之后有什么吗?理想情况下,我希望$userInput字符串看起来像这样:
/anything/could/be/in/here?including=params发布于 2021-09-16 15:57:44
如果您想要捕获任何内容:
Route::pattern('anything', '.*');
Route::namespace('Api\HelpGuides')->prefix('help')->group(function () {
Route::get('/{anything}', 'FetchArticlesController');
});控制器方法中的$anything参数将是...任何东西,包括/。
发布于 2021-09-16 15:58:30
您可以使用$request->getQueryString()获取查询字符串。
所以你可以这样做
Route::namespace('Api\HelpGuides')->prefix('help')->group(function () {
Route::get('/{userInput}', 'FetchArticlesController')->where('userInput', '.*');
});public function __invoke(Request $request, string $userInput)
{
$userInput = trim("{$userInput}?{$request->getQueryString()}", '?');
}如果末尾没有查询字符串,我会修剪问号。
发布于 2021-09-16 15:58:30
尝试$request->fullUrl()或$request->getRequestUri()
https://stackoverflow.com/questions/69211022
复制相似问题