Laravel $request->input() 正在获取 url 路径和查询参数名称
Laravel $request->input() is getting url path together with the query param name
我有一条路线可以从数据库中获取多条记录。可以将过滤器作为查询参数应用于它。例如西德。
在我的控制器中,我正在做一个 $chosen_category = $request->input('cid', 0);
并且在本地主机上工作时它恰到好处。
但是,在真实域上进行测试时,第一个请求参数被破坏了,因为它获取了整个路径和名称。所以我的变量总是等于默认值 (0)。
这是 print_r($request->all()) 的输出:
在本地主机上:
Array
(
[cid] => 33
)
网站域名:
Array
(
[//items/getAll?cid] => 33
)
我的路线定义为
Route::prefix('items')->group(function () {
Route::get('/getAll', [App\Http\Controllers\ItemsController::class, 'getItems']);
});
我正在从前端向 "items/getAll?cid=33"
发出请求。它在其他一切正确的情况下执行正确的功能,只是第一个参数的名称错误。如果重要,域的类型为 subdomain.domain.com。
为什么它的行为与本地主机不同?我该如何解决?
在阅读了有关查询参数的问题后,我检查了 $_SERVER["QUERY_STRING"]
变量的输出并发现它是相同的(//items/getAll?cid=33
而不仅仅是 cid=33
)所以问题与网络服务器有关,与我的代码无关。
找到这个后,我搜索了问题并开始查看 Web 服务器(它是 Nginx)的配置文件。
原来在 nginx conf 中为此域更改一行解决了问题:
之前:try_files $uri $uri/ /index.php?/$request_uri;
之后:try_files $uri $uri/ /index.php$is_args$query_string;
(我不是设置服务器的人,所以我不知道它在做什么。)
我有一条路线可以从数据库中获取多条记录。可以将过滤器作为查询参数应用于它。例如西德。
在我的控制器中,我正在做一个 $chosen_category = $request->input('cid', 0);
并且在本地主机上工作时它恰到好处。
但是,在真实域上进行测试时,第一个请求参数被破坏了,因为它获取了整个路径和名称。所以我的变量总是等于默认值 (0)。
这是 print_r($request->all()) 的输出:
在本地主机上:
Array ( [cid] => 33 )
网站域名:
Array ( [//items/getAll?cid] => 33 )
我的路线定义为
Route::prefix('items')->group(function () { Route::get('/getAll', [App\Http\Controllers\ItemsController::class, 'getItems']); });
我正在从前端向 "items/getAll?cid=33"
发出请求。它在其他一切正确的情况下执行正确的功能,只是第一个参数的名称错误。如果重要,域的类型为 subdomain.domain.com。
为什么它的行为与本地主机不同?我该如何解决?
在阅读了有关查询参数的问题后,我检查了 $_SERVER["QUERY_STRING"]
变量的输出并发现它是相同的(//items/getAll?cid=33
而不仅仅是 cid=33
)所以问题与网络服务器有关,与我的代码无关。
找到这个后,我搜索了问题并开始查看 Web 服务器(它是 Nginx)的配置文件。 原来在 nginx conf 中为此域更改一行解决了问题:
之前:try_files $uri $uri/ /index.php?/$request_uri;
之后:try_files $uri $uri/ /index.php$is_args$query_string;
(我不是设置服务器的人,所以我不知道它在做什么。)