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