如何删除控制台错误422(不可处理的内容)



我在控制器中为电子邮件编写验证

public function store(Request $request)
{
/*
* validate request
*/
$request->validate([
'email' => ['required', 'unique:leads', 'email'],
]);
return response()->json([],422);
if (AppModelsLead::where(['email' => $request->get('email')])->count() > 0) {
// user found
return response()->json([ 'data' => [
'message' => 'lindirizzo email è già registrato'
]], 200);
}
else {
// Register the new user or whatever.
$client = AppModelsLead::create(['email' => $request->get('email'),]);
return response()->json([ 'data' => [
'message' => 'Registrato con successo!'
]], 201);
}
}

当我在前面写同样的电子邮件时,我会收到错误POSThttp://127.0.0.1:8000/api/register/leads422(不可处理内容(

我的网络响应正常,{"消息":"验证.唯一","错误":{"电子邮件":["验证.独特"]}但我不想在控制台中显示错误

这行代码是不必要的。

// ...
return response()->json([],422);
// ...

移除它。


写入验证逻辑

。。。如果验证失败,正确的响应将自动生成。如果验证通过,我们的控制器将继续正常执行。


附录

下面的代码块也是不必要的,因为验证规则'unique:leads'是足够的:

// ...
if (AppModelsLead::where(['email' => $request->get('email')])->count() > 0) {
// user found
return response()->json([ 'data' => [
'message' => 'lindirizzo email è già registrato'
]], 200);
}
// ...

也将其移除!

如果您希望为";独特的电子邮件">验证,将其添加为->validate(...)方法的第二个参数:

$request->validate([
'email' => ['required', 'unique:leads', 'email'],
], [
'email.unique' => 'lindirizzo email è già registrato'
]);

首先,您需要检查表中是否有可用的电子邮件。如果你发现了该电子邮件的任何计数,那么只需忽略创建记录,否则你可以在数据库中添加一个新条目来添加该电子邮件。

if (Lead::where(['email' => $request->get('email')])->count() > 0) {
return response()->json([ 'data' => [
'message' => 'User data get successfully'
]], 200);
}else{
// Add a user with new email and send json response
}
}

最新更新