本章知识梳理和总结

7.1回复数据

这一节重点是评论、帖子与用户之间的数据关联。

7.2回复列表

这一节重点是在视图层,将前一章的关联数据填入视图中。

7.3发表回复

这一节重点是对表单数据的处理,大都是以前学过的:

使用表单验证类限制用户输入

在观察器中对数据进行处理

个人理解:
相对于控制器中使用Eloquent模型直接存储(我管这个叫“主干”,即主要操作),在观察器中的数据处理属于对细节和旁支的操作,扩展性强,易于把握执行的时机,如本节中,在creating 中执行防范XSS攻击的数据处理,在 created中对文章评论数进行刷新

7.4消息通知

这一节是第一次接触Laravel的通知系统,这里我们首先使用的是database频道,via($notifiable)方法返回了使用哪些频道。这里我们首先使用的是database频道,Laravel自带了针对database频道的通知表单迁移文件,需要执行迁移。

一条通知对应着一个通知类,这个类中可以包含多种通知的频道。使用该通知的方法,use 引入该通知类,同时trait——Illuminate\Notifications\Notifiable,调用Notifiable中的notify()方法,该方法接收通知实例(也就是刚才引入的通知类)做参数。

$reply->topic->user->notify(new TopicReplied($reply))

toDatabase方法将我们想传入到通知列表页面的数据打包为一个数组返回,进行保存

public function toDatabase($notifiable)

我们可以观察一下notifications数据表,这里没有user_id,但是有一个notifiable_id,这个就相当于user_id。data字段是一个被压缩为json格式的数组。

本章知识梳理和总结

访问通知时根据notifiable_id字段查找数据记录,使用Illuminate\Notifications\Notifiabletrait里面的notificationsEloquen关联方法返回实体通知

$notifications = Auth::user()->notifications()->paginate(20);

在view层输出data字段里保存的数组内容

<a href="{{ $notification->data['topic_link'] }}">{{ $notification->data['topic_title'] }}</a>

查找数据记录后,将通知标为已读

$user->unreadNotifications->markAsRead();

7.6邮件通知

邮件通知toMail($notifiable)返回一个Illuminate\Notifications\Messages\MailMessage 实例

    public function toMail($notification)
    {
        $url = $this->reply->topic->link(['#reply'.$this->reply->id]);

        return (new MailMessage)
                        ->line('你的话题有新回复')
                        ->action('查看回复',$url);
    }

由于邮件通知涉及到调用API接口,所以这里使用队列任务系统,实现shouldQueue接口

class TopicReplied extends Notification implements ShouldQueueCopy

Laravel 会检测 ShouldQueue 接口并自动将通知的发送放入队列中

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!