Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel自定义错误验证JSON响应对象到数组_Php_Json_Laravel_Laravel 5 - Fatal编程技术网

Php Laravel自定义错误验证JSON响应对象到数组

Php Laravel自定义错误验证JSON响应对象到数组,php,json,laravel,laravel-5,Php,Json,Laravel,Laravel 5,如果用户没有填写必填字段,我会尝试为注册表创建API。验证程序以对象格式显示错误,但i需要数组格式的json响应 $validator = Validator::make($request->all(), [ 'name' => 'required', 'mobile' => 'required', 'address' => 'required', ]); if ($validator->fails()) { return

如果用户没有填写必填字段,我会尝试为注册表创建API。验证程序以对象格式显示错误,但
i
需要数组格式的json响应

$validator = Validator::make($request->all(), [ 
    'name' => 'required', 
    'mobile' => 'required', 
    'address' => 'required', 
]);
if ($validator->fails()) { 
    return response()->json(['error'=>$validator->errors()], 401);            
}
电流输出为

预期产量


为了获得预期结果,请使用
foreach()
循环迭代
$validator->errors()
,并将所有值推送到一个数组中并返回该数组,如下所示:

$err = array();
foreach ($validator->errors() as $error)
{
    array_push($err, $error);
}

return response()->json(['error'=>$err], 401);

正确答案是:

$err = array();

        foreach ($validator->errors()->toArray() as $error)  {
            foreach($error as $sub_error){
                array_push($err, $sub_error);
            }
        }
        return ['errors'=>$err];
添加内部foreach是因为一个输入可能有多个验证条件失败(例如:密码太短&
太弱


Mayank Pandeyz对循环的回答
不会重复,因为在我们将
toArray()
添加到
$validator->errors()

的末尾之前,访问当前输出有什么问题?您最终找到解决方案了吗?我找到了一个解决方案并将其作为答案发布
$err = array();
foreach ($validator->errors() as $error)
{
    array_push($err, $error);
}

return response()->json(['error'=>$err], 401);
$err = array();

        foreach ($validator->errors()->toArray() as $error)  {
            foreach($error as $sub_error){
                array_push($err, $sub_error);
            }
        }
        return ['errors'=>$err];