当我尝试发送邮件时,laravel中的未定义变量

时间:2018-12-22 18:09:48

标签: php laravel

我正在尝试向网站中的各个人发送电子邮件,但是我收到了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

2 个答案:

答案 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);
        });
    }

尝试一下,让它知道如何工作...:)