我正在尝试向网站中的各个人发送电子邮件,但是我收到了Laravel的邮件:
未定义的变量:usuariosAnjos
这是我的职能:
public function avisarAnjos(Request $request){
$data = array(
'lat' => $request->lat,
'lng' => $request->lng,
'foto' => $request->foto
);
$usuariosAnjos = User::select('email')->where('usuario_anjo', 1)->get();
for($i=0; $i < count($usuariosAnjos); $i++){
Mail::send('email', $data, function ($message){
$message->from('renatoveronese600@gmail.com', 'Ei, tem um pet precisando da sua ajuda!');
$message->to($usuariosAnjos[$i][$email]);
});
}
return response()->json("Email enviado com sucesso", 201);
}
如果戴上response()->json($usuariosAnjos,201)
,我会收到数组。
为什么我得到未定义的变量#usuariosAnjos
?
答案 0 :(得分:1)
尝试一下:
Mail::send('email', $data, function ($message) use ($usuariosAnjos, $i) {
$message->from('renatoveronese600@gmail.com', 'Ei, tem um pet precisando da sua ajuda!');
$message->to($usuariosAnjos[$i][$email]);
});
基本上,当您使用闭包和外部变量时,必须在闭包中使用use
该变量。
答案 1 :(得分:1)
使用第三个参数之类的闭包函数
Mail::send('email', $data, function ($message){ .... });
该函数将在代码中未声明或不存在变量的其他地方运行,因为这是其他范围。
您始终需要传递将来将使用的变量。为此,您可以使用“使用” PHP语句
Mail::send('email', $data, function ($message) use ($usuariosAnjos,$i){ .... });
在这种情况下,正确的方法可能是直接通过电子邮件地址
foreach($usuariosAnjos as $user){
$email = $user->email;
Mail::send('email', $data, function ($message) use ($email) {
$message->from('renatoveronese600@gmail.com', 'Ei, tem um pet precisando da sua ajuda!');
$message->to($email);
});
}
尝试一下,让它知道如何工作...:)