使用Notification实现点赞、收藏功能

1 创建notification

php artisan make:notification PostPublished

此时app\Notifications目录中有PostPublished.php文件,打开该文件。可以看到下面的方法内容。

public function via($notifiable)
{
    //这里可以有多种配置,可以时mail,也可以是datebase——站内信通知
    return ['mail'];
    //站内信
    //return ['database'];


}

public function toMail($notifiable)
{
    return (new MailMessage)
                //也可以通过subject方法直接定义邮件主题
                ->subject('A Post published'.$this->post->title)

                //如果想改变中间蓝色框,可以增加success设置。
                ->success()

                //对原代码进行修改
                //->line('The introduction to the notification.')
                ->line('new post on laracist:'.$this->post->title)

                //Natification Action的链接即是https://laravel.com
                //->action('Natification Action', 'https://laravel.com')
                ->action('Read It Now',url('/post/'.$this->post->id))

                ->line('Thank you for using our application!');
}

这里写图片描述

关于图片中的最上/下一行My Application文字可以通过config\app.php修改。

//原代码文字
//'name'=>'My Application',
//修改为
'name'=>'欢迎您!',

2 打开web.php路由

Route::get('/',function(){

    //查找Id为2的用户,查考post为4的数据
    $user=\App\User::find(2);
    $post=\App\Post::find(4);

    //实例化1中创建的PsrtPblished.php类,同时将参数$post传入
    $user->notify(new \App\Notification\PostPublished($post));

});

3 PostPublished.php文件中接受路由中传来的参数

class PostPublished extends Notification
{
    use Queueable

    //定义一个$post属性
    public $post;


    //构造函数中自动加载传参,post参数依赖注入
    public fucntion __construct(Post $post)
    {
        $this->post=$post;
    }

    //其他地方不作变动
}

4 mail.php配置

config\mail.php文件配置

'from'=>[
    'address'=>'fa_song_zhe@126.com',
    'name'=>'fa_song_zhe',

5 .env文件

邮件配置

MAIL_HOST=mailtrap.io //追踪邮件的发送

打开mailtrap.io网站进行注册。将SMTP Setting下的SMTP中的Username和Password的值拷贝到.env文件中
这里写图片描述
将其中的username和password两项内容

Username:   98e5a5ee33a592
Password:   743c72d10a8i47

填到.env文件中(约在第26~30行)

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=98e5a5ee33a592
MAIL_PASSWORD=743c72d10a8i47
MAIL_ENCRYPTION=null

配置完成,这时触发路由文件则会向smtp.mailtrap.io邮件中发送邮件。

6 执行vendor:publish

php artisan vendor:publish
//此时会显示
Copied Directory [/vendor/laracel/framework/src/Illuminate/Notifications/resources/views] to [/resources/views/vendor/notifications]
Copied Directory [/vendor/laracel/framework/src/Illuminate/Pagination/resources/views] to [/resources/views/vendor/pagination]

此时文件目录
resources\vews\vendor\notifications\email.blade.php
之后再修改邮件内容是只需修改email.blade.php文件内容即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 RabbitMQ 来实现点赞系统通知,我们需要先了解 RabbitMQ 的工作原理。 RabbitMQ 是一个消息队列中间件,它的核心概念是生产者和消费者。生产者负责发送消息到队列中,而消费者则从队列中接收消息并进行处理。 在点赞系统中,我们可以将点赞事件看作是一个消息,当用户点赞某篇文章时,我们需要将这个点赞事件发送到 RabbitMQ 的队列中。然后,我们可以编写一个消费者程序,从队列中接收点赞事件,并将通知发送给文章作者或者其他订阅者。 下面是实现点赞系统通知的步骤: 1. 安装 RabbitMQ,并启动 RabbitMQ 服务。 2. 在项目中安装 RabbitMQ 的客户端库,例如 Pika。 3. 当用户点赞某篇文章时,将点赞事件发送到 RabbitMQ 的队列中。可以使用以下代码示例: ```python import pika connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost')) channel = connection.channel() channel.queue_declare(queue='likes') message = 'User1 liked Article1' channel.basic_publish(exchange='', routing_key='likes', body=message) connection.close() ``` 4. 编写一个消费者程序,从队列中接收点赞事件,并将通知发送给文章作者或者其他订阅者。可以使用以下代码示例: ```python import pika connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost')) channel = connection.channel() channel.queue_declare(queue='likes') def callback(ch, method, properties, body): print("Received message: %r" % body) # Send notification to author or subscribers channel.basic_consume(queue='likes', on_message_callback=callback, auto_ack=True) print('Waiting for messages...') channel.start_consuming() ``` 在上面的代码中,我们使用 `basic_consume` 方法来订阅队列中的消息,并指定一个回调函数 `callback`,用于处理接收到的消息。在回调函数中,我们可以将点赞事件发送给文章作者或者其他订阅者。 通过以上步骤,我们就可以使用 RabbitMQ 来实现点赞系统通知了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值