此节复写 trait 中的 notify 方法,会导致框架自带的「重新发送邮件」的功能失效,建议在 user model 类中新增一个 topicNofity 方法单独处理即可。

此节重写了 \Illuminate\Notifications\RoutesNotifications::notify,导致如果是发送给自己的通知,就不会发送 $this->id == Auth::id(),但是激活邮件是需要发送给自己的。所以,最好是不要重写trait中的notify方法,而改为在user model类中新增一个topicNotify()的方法,代码如下:

  • app/Models/User.php

    //    public function notify($instance)
    //    {
    //        // 如果要通知的人是当前用户,就不必通知了!
    //        if ($this->id == Auth::id()) {
    //            return;
    //        }
    //        $this->increment('notification_count');
    //        $this->laravelNotify($instance);
    //    }
    
    public function topicNotify($instance)
    {
        // 如果要通知的人是当前用户,就不必通知了!
        if ($this->id == Auth::id()) {
            return;
        }
        $this->increment('notification_count');
        $this->notify($instance);
    }
  • app/Observers/ReplyObserver.php
    public function created(Reply $reply)
    {
        $topic = $reply->topic;
        $reply->topic->increment('reply_count', 1);
        // 通知作者话题被回复了
        $topic->user->topicNotify(new TopicReplied($reply));
    }
  • 测试「重新发送邮件」和「消息通知」的功能,成功!
本帖已被设为精华帖!
本帖由系统于 2周前 自动加精
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 4

找了好久的问题

6个月前 评论

5.7版本中似乎有了更好的解法。

5个月前 评论

這個問題我也找了好久XD

4个月前 评论

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

社区文档:

将托管在 packagist.org 和 github.com 的扩展包使用国内 CDN 加速
GitHub Laravel 扩展包 TOP 250
速查表方便快速查询框架功能,支持手机访问,支持中英文版本
Laravel 中文文档,由社区用户翻译和维护,将会保持一直更新
此文档的目的,就是为了提高技术团队的凝聚力、一致性和生产效率。
开发环境的部署,开发者工具的选择,适用于 Mac 和 Windows。
浓缩过后的精华
Laravel Nova 后台管理面板文档的中文翻译
Lumen 中文文档,由社区用户翻译和维护,将会保持一直更新
Laravel 下知名扩展包 Dingo API 的中文文档,Laravel API 开发必知必会