【问题标题】:Gravatar Error: Please specify a valid email addressGravatar 错误:请指定有效的电子邮件地址
【发布时间】:2020-02-27 06:09:16
【问题描述】:

我正在尝试在我的应用程序中使用 gravatar。

我有一组员工。并非所有人都有照片,因此我检查 avatar_type === gravatar 是否为了传递电子邮件的有效 URL(如果存在)因此我执行循环:

foreach ($employees as $employee) {
  if($employee->avatar_type === 'gravatar') { 
      $employee->avatar_location = gravatar()->get($employee->email, ['size'=>80]);
   }
}

集合的第一个项目没有照片,需要一个头像,如下所示:

App\Models\Employee\Employee {#2898 ▼
      ...
      #attributes: array:14 [▼
        "firstname" => "Mary"
        "lastname" => "Brown"
        "email" => "mariabrown@yahoo.com"
        "avatar_location" => null
        "avatar_type" => "gravatar" // <- Here is the flag
      ]

但是,即使电子邮件有效 ("email" => "mariabrown@yahoo.com") 我也会收到以下错误:

Creativeorange\Gravatar\Exceptions\InvalidEmailException
请指定一个有效的电子邮件地址

我什至做了一个测试,并在循环中“dd”了电子邮件,电子邮件就在那里。像这样:

foreach ($employees as $employee) { 

 dd($employee->email)  //<- The email is here

  if($employee->avatar_type === 'gravatar') { 
      $employee->avatar_location = gravatar()->get($employee->email, ['size'=>80]);
   }
}

我在这里错过了什么。为什么不是有效的电子邮件?

我正在使用 Laravel 6.13

gravatar 包在应用程序的其他位置(在用户个人资料页面中)下载、安装和运行。

【问题讨论】:

  • dd($employee-&gt;email) 这将在第一个员工/迭代时停止。可能是其他用户的电子邮件 ID 无效
  • @Sehdev,是的 dd() 停止循环。这是一个考验。我浏览了数据库中的员工列表(只有 10 个,这是一个测试),所有电子邮件的格式都是有效的
  • @Sehdev:我发现了问题:一封电子邮件前面有一个空白区域。我只是对电子邮件地址进行了修剪:修剪($employee->email)。感谢您引起我的注意
  • 欢迎。继续学习!

标签: laravel gravatar


【解决方案1】:

您需要在继续之前清理所有输入。在 laravel 中,我们可以编写一个简单的中间件来即时执行此任务。这是一篇解释清楚的文章。 check this medium article 希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-13
    • 2017-01-11
    • 1970-01-01
    • 1970-01-01
    • 2019-01-25
    • 2011-02-09
    • 1970-01-01
    • 2015-11-19
    相关资源
    最近更新 更多