【问题标题】:Laravel 4: How to give immediate feedback after sending email?Laravel 4:发送电子邮件后如何立即提供反馈?
【发布时间】:2014-04-10 10:30:11
【问题描述】:

情况是这样的:

我有一个 laravel 应用程序,它在预订服务后会发送一封电子邮件。 我已经安装 Iron mq 来加快这个过程。

在发送邮件需要 8/10 秒之前,使用 Iron mq 将电子邮件排队需要大约 3 秒。

但我想提供即时反馈,即立即显示确认消息。

这是控制器(大约需要 3 秒):

        $input = Input::all();

        $validation = Validator::make($input, Registration::$rules, Registration::$messages);

        if($validation->passes()) 
        {

              $registration->name = $input['name'];
              $registration->email = $input['email'];
               ...
              $registration->save();

              $mailer = new Mailers\MailerRegistration();
              $mailer->mailBooking($registration->name, $registration->email)->deliverRegistration();

              return Redirect::back()->with('message','<b>Congratulations! You have succesfully sent the email');

问题是:

如何修改控制器以便立即提供反馈? 在检查是否通过验证后,我可以将重定向作为第一件事吗? 但是在这种情况下,我到底可以通过什么作为 RETURN 呢?

我有点困惑.. 希望你能帮助我!

【问题讨论】:

  • 除非您愿意将注册过程推入队列并稍后处理,否则最直接的方法是执行 javascript 检查并在提交时向用户显示消息,然后使用javascript以ajax方式调用控制器url。
  • Laravel Mail Queue。使用队列发送并立即通知用户它已发送。
  • 对不起,可能还不够清楚,已经安装了 Iron mq,我已经在排队发邮件了。但是操作仍然需要 3 秒,我想立即给出反馈。 @har2vey 您建议使用 js 显示消息?
  • 是的,除非您想将整个注册推送到 Iron mq 并稍后处理它们,这会很麻烦,然后在 js 上进行验证然后从那里传递按摩,然后从 js 调用控制器作为好吧(你仍然需要在服务器端进行验证)。
  • 实际上我已经进行了双重验证,在客户端使用 javascript,在服务器端使用 Laravel。你能告诉我如何用js制作确认信息吗?我会认为是正确答案

标签: php email laravel laravel-4 queue


【解决方案1】:

现在您正在使用安全的方式,即:验证,保存模型然后通知,如果时间紧迫,id 使用验证通知然后保存模型,但是如果存储模型失败,您需要处理它,您选择根据您的首选方法,您可以重新创建模型或通知用户或做任何创造性的事情来处理这种情况。

这种方法背后的原因,每次你访问数据库或模型层时都会有一定的延迟,如果你在通知之前通知,那么你将延迟推到通知之后

【讨论】:

  • 感谢您的回答。我试图做类似的事情,把 Redirect::back()->with('message','恭喜你!你已经成功发送了电子邮件');验证通过后。但后来我不知道如何关闭函数,传递什么作为 RETURN..
  • 我希望我的回答对上一个问题有用,与新问题有关,老实说,我不明白你在这里想要做什么......如果你将它作为一个新问题发布变得更好..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-12
  • 2020-05-22
  • 2016-08-11
  • 1970-01-01
  • 2022-01-21
  • 2019-08-01
相关资源
最近更新 更多