大家好我正在使用Laravel 5.5,在这里我需要为我的API显示验证消息,我现在已经这样做了
const
由于Laravel 5.5具有一些非常棒的验证功能,我希望像这样验证我的请求
$validator = Validator::make($request->all(),[
'first_name' => 'email|required',
'last_name' => 'nullable',
'email' => 'email|required',
'mobile_no' => 'nullable|regex:/^[0-9]+$/',
'password' => 'required',
]);
if($validator->fails)
{
$this->setMeta('status', AppConstant::STATUS_FAIL);
$this->setMeta('message', $validator->messages()->first());
return response()->json($this->setResponse(), AppConstant::UNPROCESSABLE_REQUEST);
}
但是我在这里遇到问题我应该怎么做以检查验证是否失败?就像我在request()->validate([
'first_name' => 'email|required',
'last_name' => 'nullable',
'email' => 'email|required',
'mobile_no' => 'nullable|regex:/^[0-9]+$/',
'password' => 'required',
]);
答案 0 :(得分:3)
在 Laravel 5.5 中,与提及documentation一样,验证过程非常简单:
那么,如果传入的请求参数没有通过给定的话,该怎么办? 验证规则?如前所述,Laravel会自动完成 将用户重定向回其先前的位置。另外,全部 验证错误将自动闪现到会话中。
再次注意,我们不必显式绑定错误 消息到我们的GET路线中的视图。这是因为Laravel会的 检查会话数据中的错误,并自动将它们绑定到 视图是否可用。
在此示例中,我们使用传统表单将数据发送到 应用。但是,许多应用程序使用AJAX请求。使用时 在AJAX请求期间的验证方法,Laravel不会生成 重定向响应。相反,Laravel会生成JSON响应 包含所有验证错误。这个JSON响应将是 使用422 HTTP状态代码发送。
正如你所说的那样:这意味着你不需要把你的ifs用于处理验证laravel会很好地照顾它们:)
答案 1 :(得分:0)
这是我使用的一些语法
public static $user_rule = array(
'user_id' => 'required',
'token' => 'required',
);
public static function user($data)
{
try{
$rules = User::$user_rule;
$validation = validator::make($data,$rules);
if($validation->passes())
{
}
else
{
return Response::json(array('success' => 0, 'msg'=> $validation->getMessageBag()->first()),200);
}
return 1;
}
catch(\Illuminate\Databas\QueryException $e) {
return Response::json(array('success' => 0, 'msg' => $e->getMessage()),200);
}
}
希望这会对你有帮助!
答案 2 :(得分:0)
请在标题中添加接受:application / json 。
Laravel自动发送带有响应代码的错误消息。
答案 3 :(得分:0)
根据2019 Laravel 5.8的操作就这么简单:
// create the validator and make a validation here...
if ($validator->fails()) {
$fieldsWithErrorMessagesArray = $validator->messages()->get('*');
}
您将获得字段名称和错误消息的数组。