用于 api 的 Laravel/Lumen 电子邮件修剪

Posted

技术标签:

【中文标题】用于 api 的 Laravel/Lumen 电子邮件修剪【英文标题】:Laravel/Lumen email trimming for api 【发布时间】:2018-05-11 12:15:18 【问题描述】:

我正在使用 Laravel/Lumen 开发一个 API。我看到很少有用户抱怨即使他们的电子邮件完全没问题,我的 api 回复说The email must be a valid email address.

我看到的是,他们在'noob@user.com ' 之类的电子邮件之后错误地给了一个空格。结果,系统不接受电子邮件。到目前为止,我在代码中使用的是:

try 
       $this->validate($request, [
        'first_name' => 'required|min:3|max:40',
        'last_name'  => 'required|min:3|max:40',
        'email'      => 'required|email|unique:clients,email',
        'profile_photo' => ''
         ]);
         catch (ValidationException $e) 
            return response()->json($this->clientTransformer->validationFailed($e), 200);
     

我尝试在 try 块的第一行中添加以下行,但未能更改 $request 对象属性。

  try
    $request->email = trim($request->email, ' '); //<= or
    $request->email = str_replace(' ', '', $request->email); // <= this line

$this->validate($request, [
                'first_name' => 'required|min:3|max:40',
                'last_name'  => 'required|min:3|max:40',
                'email'      => 'required|email|unique:clients,email',
                'profile_photo' => ''
                 ]);
    

但这些都不起作用。这是将完全相同的电子邮件传递给 validate 方法。有什么快速的方法吗?

【问题讨论】:

您可以在发送请求之前使用javascript的trim方法使其工作。 【参考方案1】:

你可以使用:

$request->replace(array('email' => trim($request->email)));

$request->merge(array('email' => trim($request->email)));

来源:

https://laracasts.com/discuss/channels/general-discussion/laravel-5-modify-input-before-validation

【讨论】:

$request->merge() 完美运行,$request->replace() 仅用一个数组项(电子邮件)替换所有数组。这不是预期的......无论如何......谢谢..回答已接受

以上是关于用于 api 的 Laravel/Lumen 电子邮件修剪的主要内容,如果未能解决你的问题,请参考以下文章

Laravel/Lumen Tymon/JWT 通过电话号码和密码

如何在 Laravel/Lumen 中捕获 401 响应?

在 laravel/lumen 中使用客户端 ID 和密钥访问 API

Angular IO 与 Laravel Lumen PHP API CORS 问题

如何在 Lumen 6x 中实现默认 Laravel 重置密码

获取经过身份验证的用户 Laravel/Lumen Passport