我有个小问题。我使用Laravel创建简单的API。当我使用验证时,如果它失败了,我会得到一条常见的消息:
{
"result": false,
"message": "The given data failed to pass validation.",
"details": []
}
但是,我如何才能获得有关哪个字段失败以及失败原因的详细信息:
{
"result":false,
"message":"The given data failed to pass validation.",
"details":{
"email":[
"The email field is required."
],
"password":[
"The password must be at least 3 characters."
]
}
}
我在控制器中的代码如下所示:
protected function validator(array $data)
{
$validator = Validator::make($data, [
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:3',
]);
return $validator;
}
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
'role_id' => 2
]);
}
发布于 2018-06-07 05:59:38
最好在同一进程中处理验证器,如下所示:
public function register(Request $request){
$validator = Validator::make($request->all(),[
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:6|confirmed',
]);
if($validator->fails()){
return response()->json([
"error" => 'validation_error',
"message" => $validator->errors(),
], 422);
}
$request->merge(['password' => Hash::make($request->password)]);
try{
$user = User::create($request->all());
return response()->json(['status','registered successfully'],200);
}
catch(Exception $e){
return response()->json([
"error" => "could_not_register",
"message" => "Unable to register user"
], 400);
}
}
发布于 2020-04-25 12:13:09
您应该确保使用Accept: application/json头发送请求。
否则,Laravel不会检测到这是一个API请求,
如果验证失败,将生成一个重定向响应,将用户发送回其以前的位置。错误还将闪现到会话中,以便可以显示。如果请求是AJAX请求,将向用户返回一个状态代码为422的HTTP响应,其中包含验证错误的JSON表示。
发布于 2021-06-16 14:35:08
试试这个:
public function create(){
// ------ Validate -----
$this->vallidate($request,[
'enter code here`name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:3'
]);
// ------ Create user -----
$user = User::create(['name' => $request->name']);
return response()->json([
'message' => "success",
'data' => $user``
]);
}
https://stackoverflow.com/questions/45864638
复制相似问题