Laravel/Lumen:验证电子邮件的数据已经存在和一般验证
Posted
技术标签:
【中文标题】Laravel/Lumen:验证电子邮件的数据已经存在和一般验证【英文标题】:Laravel/Lumen: validating data for email already exist and general validation 【发布时间】:2015-11-17 01:51:14 【问题描述】:我正在编写一个 API。我想知道如何返回正确的响应。
数据无效(仅当电子邮件区域存在时) 数据无效(一般验证错误)到目前为止,这是我的代码:
$data = Input::all();
$validator = Validator::make($request->all(), [
'email' => 'required|email|unique:users,email',
'some_other_field' => 'required'
]);
if ($validator->fails())
// NOTE: using a or b, this are my custom methods
a) return $this->existsResponse($data);
b) return $this->badRequestResponse($data);
我如何确定电子邮件是否已经存在?
【问题讨论】:
【参考方案1】:您应该查看 Validator 类。我认为方法 invalid() 和 valid() 应该适合您。此方法为您返回一组键。
http://laravel.com/api/5.0/Illuminate/Validation/Validator.html#method_invalid
【讨论】:
感谢您的努力。我尝试了 invalid() 方法,这在这两种情况下都给了我电子邮件元素。但没有说明为什么元素无效。还有什么想法吗?【参考方案2】:好吧,您正在尝试进行两种不同类型的验证,因此使用两种不同的验证器是有意义的:
$data = $request->all();
// validate email
$validator = Validator::make($data, [
'email' => 'required|email|unique:users,email',
]);
if ($validator->fails())
return $this->existsResponse($data);
// email valid, so validate other data
$validator = Validator::make($data, [
'some_other_field' => 'required'
]);
if ($validator->fails())
return $this->badRequestResponse($data);
// if here, all data is valid
【讨论】:
感谢您的努力,但这不是我的情况。不知何故,我需要确定为什么电子邮件无效。【参考方案3】:我已经这样解决了。
public function store(Request $request)
$data = Input::all();
// validating data
$validator = Validator::make($request->all(), [
'email' => 'required|email',
'some_other_field' => 'required'
]);
if ($validator->fails())
return $this->badRequestResponse($data);
// validating if resource exists
$userExists = User::where('email', $request->email)->count();
if($userExists)
return $this->existsResponse($data);
// inserting data
$user = new User();
$user->fill($data);
$user->save();
if($user->save())
return $this->createdResponse($data);
【讨论】:
以上是关于Laravel/Lumen:验证电子邮件的数据已经存在和一般验证的主要内容,如果未能解决你的问题,请参考以下文章
获取经过身份验证的用户 Laravel/Lumen Passport
如何在 Lumen 6x 中实现默认 Laravel 重置密码