$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" }
error : { code: 11 title: "Some error title" message: "Some error message" }
我该怎么做这个验证?我需要.required
有人可以请一点解释一下吗?
解决方法
如果你想要这种验证错误信息格式,我认为你应该构建一些更复杂的“开箱即用”的东西.
这是您通过简单的验证测试得到的.
这是我使用的代码.
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" }
“好的,我能做什么?”
首先,一些假设.我看到你只拍了第一个错误.所以,你会得到这样的东西:
"The name field is required."
以这种方式工作,您将丢失“名称”信息.你所拥有的只是一个简单的字符串消息.考虑到你想要达到的目标,没什么大不了的.
所以,我会工作不同.有很多方法可以做我将要做的事情,我只会告诉你一个程序.
首先,让我们来看一下数组的第一个元素.
$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];
获得关键和价值.
最后,您应该使用它们来构建您的响应.
这是一个例子:
return response()->json( [ "code" => "400","error" => [ "code" => "10","title"=> "Field $key is empty.","message" => $value ] ]);
显然,我建议你创建一个类来实现整个机制,以便隔离职责.
希望能帮助到你.