gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-10-31 23:38:58 25 4
gpt4 key购买 nike

$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 中返回一个错误 block

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

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

希望对您有所帮助。

关于php - 在 PHP (Laravel) 中向 JSON 添加错误标题和消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32536616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com