Laravel Mailable在应该发送一次时多次发送邮件

w8biq8rn  于 2022-12-01  发布在  其他
关注(0)|答案(1)|浏览(182)

我使用Laravel 9。我做了一个系统,管理员评估一个球员,它给他发了一封邮件,说他在网站上被接受。
在视图中,当admin单击accept时,它将进入评估控制器,如果值是accept的值,则发送邮件。
控制器:

public function update(Request $request, $id) {
        $evaluation = Evaluation::findOrFail($id);

        $evaluation->approved = $request->approved;

        $evaluation->save();

        if($evaluation->approved == 3) {
            $user = User::findOrFail($evaluation->idUser);
            $user->evaluation = 1;
            $user->save();
            Mail::to($user->email)->send(new EvaluationMailable());
        }

        return view('admin.evaluaciones');
    }

查看方式:

<form method="POST" action="{{route('evaluation.update',$evaluaciones->id)}}">
    @csrf
    <input type="text" name="approved" value="3" hidden>
    <button type="submit" class="btn btn-primary bg-primary">Aceptar</button>
    @method('PUT')
</form>

部分用户收到的内容:

yc0p9oo0

yc0p9oo01#

为什么不对评估值添加验证,以检查它是否还没有值3,这似乎符合您“需要”发送电子邮件的标准。

public function update(Request $request, $id) {
        $sendMail = true;
        $evaluation = Evaluation::findOrFail($id);
        if ($evaluation->approved != 3) {
          $evaluation->approved = $request->approved;
          $sendMail = false;
        }
        $evaluation->save();

        if($sendMail && $evaluation->approved == 3) {
            $user = User::findOrFail($evaluation->idUser);
            $user->evaluation = 1;
            $user->save();
            Mail::to($user->email)->send(new EvaluationMailable());
        }

        return view('admin.evaluaciones');
    }

它可以防止向同一评估/用户发送多封具有相同表单的电子邮件。

相关问题