使用 Laravel Notifynder 扩展轻松实现 Laravel 应用的消息通知功能

WBOY
Freigeben: 2016-06-20 12:25:46
Original
1442 Leute haben es durchsucht

1、简介

Notifynder 以简单的方式提供了强大的消息通知管理功能:其提供的完整API可用于对消息通知的各种处理,比如存储、检索以及组织处理成百上千条通知的代码库。有了Notifynder,你可以在几分钟内在你的Laravel项目中“启用”消息通知功能。

目前支持的数据库包括MySQL、Postgres和SQLite。

2、安装

使用Composer安装该扩展:

composer require fenos/notifynder
Nach dem Login kopieren

然后到 config/app.php 中注册服务提供者:

Fenos\Notifynder\NotifynderServiceProvider::class,
Nach dem Login kopieren

以及门面:

'Notifynder' => Fenos\Notifynder\Facades\Notifynder::class,
Nach dem Login kopieren

发布该扩展包的配置文件到 config 目录:

php artisan vendor:publish --provider="Fenos\Notifynder\NotifynderServiceProvider"
Nach dem Login kopieren

最后运行数据库迁移生成相应数据表:

php artisan migrate
Nach dem Login kopieren

3、快速上手

创建分类

在开始使用Notifynder之前,我们需要简单了解“分类”这一术语在Notifynder中的职责,分类是消息通知的主体,通过唯一的名称来区分,并且拥有对应的通知文本,每个通知都要绑定到一个分类上,以便于管理和维护。

首先我们使用Notifynder提供的Artisan命令来创建一个分类 :

php artisan notifynder:create:category "user.following" "{from.username} started to follow you"
Nach dem Login kopieren

这会在数据库 notification_categories 表中创建一条新纪录:

功能实现

接下来确定要被通知的模型,通常我们选择 User 模型,这个被选择的模型类要使用 Notifable Trait:

use Fenos\Notifynder\Notifable;class User extends Model{    use Notifable;}
Nach dem Login kopieren

这样我们的模型实体就可以处理消息通知了:

$user = User::find(1);$user->getNotifications($limit = null, $paginate = null, $order = 'desc');$user->getNotificationsNotRead($limit = null, $paginate = null, $order = 'desc');$user->getLastNotification();$user->countNotificationsNotRead($category = null);$user->readAllNotifications();
Nach dem Login kopieren

注:如果你不想使用 Notifable Trait,也可以直接使用 Notifynder 门面上的对应方法。

4、发送通知

发送通知非常简单:

$from_user_id = 1;$to_user_id = 2;Notifynder::category('user.following')            ->from($from_user_id)            ->to($to_user_id)            ->url('http://laravelacademy.org/notifications')            ->send();
Nach dem Login kopieren

发送通知后我们来检索通知:

$userNotified = User::find($to_user_id);dd($userNotified->getNotificationsNotRead());
Nach dem Login kopieren

还可以一次发送多个通知,这里我们给多个用户发送通知:

// It send a notification to all the userstry {    $this->notifynder->loop($users, function(NotifynderBuilder $builder, $user) {       $builder->category('sayhello')           ->from(1)           ->to($user->id)           ->url('http://localhost')           ->extra(compact('period_day'));    })->send();} catch (EntityNotIterableException $e) {} catch (IterableIsEmptyException $e) {}
Nach dem Login kopieren

更多使用可参考官方文档: https://github.com/fenos/Notifynder/wiki

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!