在PHP(Laravel)中向JSON添加错误标题和消息
上面的代码将在我的JSON中返回一个错误块在PHP(Laravel)中向JSON添加错误标题和消息,php,web-services,laravel,laravel-5,laravel-5.1,Php,Web Services,Laravel,Laravel 5,Laravel 5.1,上面的代码将在我的JSON中返回一个错误块 $rules = ['email' => 'required', 'password' => 'required']; $message = ['email.required' => 'Email cannot be empty', 'password.required' => 'Password cannot be empty']; $v = Validator::make($request-
$rules = ['email' => 'required', 'password' => 'required'];
$message = ['email.required' => 'Email cannot be empty', 'password.required' => 'Password cannot be empty'];
$v = Validator::make($request->all(), $rules, $message);
$error = $v->messages();
if ($v->fails()) {
return response()->json(["code" => "400", "error" => ["code" => "10", "title"=>"" ,"message" => $error->first()
]]);
}
不过,我会添加一个标题字段,如下所示
error : {
code: 11
message: "Some error message"
}
我应该如何进行此验证?我需要.required
谁能解释一下吗 如果您想要这种验证错误消息格式,我认为您应该构建一种更为“复杂”的东西,它实际上是现成的 下面是一个简单的验证测试 这是我使用的代码
error : {
code: 11
title: "Some error title"
message: "Some error message"
}
。。。这就是输出
Route::get('/', function () {
$data = ['name' => ''];
$rules = ['name' => 'required'];
$v = \Validator::make($data, $rules);
dd($v->errors());
});
好的,那我能做什么呢?
首先是一些假设。我知道你只犯了第一个错误。你会得到这样的结果:
MessageBag {#145 ▼
#messages: array:1 [▼
"name" => array:1 [▼
0 => "The name field is required."
]
]
#format: ":message"
}
$errors = $v->errors();
$firstElement = reset($errors);
dd($firstElement);
这样做会丢失“名称”信息。您所拥有的只是一条简单的字符串消息。考虑到你想要实现的目标,这没什么大不了的
所以,我会做不同的工作。我将要做的事情有很多种方法,我将向你们展示一个过程
首先,让我们看数组的第一个元素
"The name field is required."
我会得到这样的东西:
MessageBag {#145 ▼
#messages: array:1 [▼
"name" => array:1 [▼
0 => "The name field is required."
]
]
#format: ":message"
}
$errors = $v->errors();
$firstElement = reset($errors);
dd($firstElement);
现在,从这个开始,你可以做一些
array:1 [▼
"name" => array:1 [▼
0 => "The name field is required."
]
]
获取键和值
最后,您应该使用它们来构建您的响应
下面是一个例子:
$key = key($firstElement);
$value = reset($firstElement)[0];
显然,我建议您创建一个类来实现整个机制,以便隔离责任
希望有帮助。是的,因为你的标题为空。你想成为什么标题?我想要类似的。例如:如果电子邮件是空的。我希望标题为“Email is Empty”,消息为“Please fill your Email”,您可以试试这个
return response()->json([“code”=>“400”,“error”=>[“code”=>“10”,“title”=>$message”,“message”=>$rules]])代码>它不起作用@奥尔德林27