如果用户名或电子邮件为空,则停止Laravel密码验证

时间:2019-07-15 13:25:06

标签: laravel laravel-5 laravel-5.8 laravel-validation

我有一个自定义登录表单,该表单使用API​​验证凭据。一切正常,除了如果我将用户名/电子邮件字段保留为空白并输入密码,API调用仍应发送,但应在此之前停止。

我看了规则bailrequired_with(及其他类似规则),但都不符合要求。

有没有办法只提供验证消息:

  

“标识符”字段为必填项。

代替

  

“标识符”字段为必填项。

     

对不起,这不是与您的标识符关联的密码。请检查并重试。

(如果用户名/电子邮件为空,是否停止密码验证?

根据请求的控制器代码(ApiMemberPassword只是一个自定义规则,用于发送带有用户名和密码的API请求,如果identifier为空,则无用):

$validator = Validator::make($request->all(), [
    'identifier' => ['required'],
    'password' => ['bail', 'required', new ApiMemberPassword],
]);

2 个答案:

答案 0 :(得分:2)

像这样使用它:

 $this->validate($request, [
      'identifier' => 'bail|required',
      'password' => ['required', new ApiMemberPassword],
 ]);

答案 1 :(得分:0)

由于您尚未共享任何代码,这是我的建议:

  • 使用简单的Javascript验证字段并仅在两个字段都具有值的情况下启用“提交”按钮。

至于仅针对电子邮件字段返回错误,则无法使用内置laravel验证。参见线程here

这仅仅是因为,通常为了获得良好的用户体验,应该立即显示与表单失败有关的所有错误,以便用户可以更正所有错误并在下次提交正确的表单。当完全可以完成时,没有必要对5个不同的提交进行5次校正。有道理吗?

但是,如果您确实需要此功能,则只有两个字段,您可以进行自定义验证,首先检查电子邮件,然后检查密码,或者只需两次使用Laravel内置验证。