【发布时间】:2018-09-19 08:48:46
【问题描述】:
所以我正在构建一个接受 json 输入的 api,并使用 Request 在控制器中捕获它:
{
"val1": "11",
"val2": "1000",
"val3": "1001010",
"val4": "1001"
}
但是当用户没有使用正确的 json 时,我需要捕获一个条件,这样说:
{
"val1": "11",
"val2": "1000",
"val3": "1001010"
"val4": "1001"
}
当我以错误的输入格式返回 $request 时,我得到了空数组。但是我尝试过使用isset()、empty()、count(),但它仍然没有检查参数。
public function foo(Request $request)
{
if(jsoniswrong($request)){return 'false';}
}
我需要一种方法来检查请求变量而不必调用每个值,我该怎么做?
编辑: 我最终使用了这个更简单的。我刚刚在 Laravel 中意识到,empty($request) 永远不会返回 true,因为即使在错误的请求下,它仍然具有实际输入数据以外的对象。要获取输入数据,请使用 all()。这解决了我的问题。
if(empty($request->all())){
return false;
}
【问题讨论】:
-
@thisiskelvin 在我的例子中,在函数内部,$request 已经被转换为一个对象。
-
@syam 我尝试使用它,但 $request 已经是一个对象
-
感谢您的澄清。顺便说一句,我看不出您在问题中发布的有效和无效 json 之间的区别。
-
@thisiskelvin 'invalid' 缺少逗号,在控制器中这将被视为无输入。棘手的部分是这些值是可选的,因为这些值可以为空。现在我需要知道请求实际上是空的还是格式错误。