加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

在PHP中向JSON添加错误标题和消息(Laravel)

发布时间:2020-12-14 19:39:16 所属栏目:大数据 来源:网络整理
导读:$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()
$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()
            ]]);
        }

上面的代码将在我的JSON中返回一个错误块

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
    ]
]);

显然,我建议你创建一个类来实现整个机制,以便隔离职责.

希望能帮助到你.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读