notifier, CakePHP 3.x的通知插件

分享于 

8分钟阅读

GitHub

  繁體 雙語
Notifications plugin for CakePHP 3.x
  • 源代码名称:notifier
  • 源代码网址:http://www.github.com/bakkerij/notifier
  • notifier源代码文档
  • notifier源代码下载
  • Git URL:
    git://www.github.com/bakkerij/notifier.git
    Git Clone代码到本地:
    git clone http://www.github.com/bakkerij/notifier
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/bakkerij/notifier
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    CakePHP的插件插件插件

    TravisPackagistPackagistGitter

    这个插件允许你将一个简单的通知系统集成到你的应用程序中。

    安装

    你可以使用 Composer 插件将这个插件安装到你的CakePHP应用程序中。

    将这里插件安装为 Composer 软件包的推荐方式是:

    
     composer require bakkerij/notifier
    
    
    
    

    现在通过以下命令加载插件:

    
     bin/cake plugin load -b Bakkerij/Notifier
    
    
    
    

    加载插件之后,你需要迁移插件的表,如下所示:

    
     bin/cake migrations migrate -p Bakkerij/Notifier
    
    
    
    

    发送通知

    模板

    在发送任何通知之前,我们需要 register。 有关如何添加模板的示例:

    $notificationManager->addTemplate('newBlog', ['title'=>'New blog by :username','body'=>':username has posted a new blog named :name' ]);

    添加新模板时,必须添加 titlebody。 两者都可以包含 :username:name 之类的变量。 稍后我们将详细介绍这些变量。

    电子邮件通知

    现在我们将能够使用 newBlog 模板发送一个新通知。

    $notificationManager->notify(['users'=> [1, 2],'recipientLists'=> ['administrators'],'template'=>'newBlog','vars'=> ['username'=>'Bob Mulder','name'=>'My great new blogpost' ] ]);

    注:你还可以通过组件发送通知: $this->Notifier->notify()

    使用 notify 方法,我们发送了一个新通知。 所有属性的列表:

    • users - 这是一个整数或者 array,其中包含要通知的id用户。 因此,当你想通知用户 261和 373时,添加 [261, 373]
    • recipientLists - 这是一个包含收件人列表的字符串或者 array。 你可以进一步了解有关RecipientLists的更多信息。
    • template - 你添加的模板,例如 newBlog
    • vars - 要使用的变量。 在模板 newBlog 中,我们使用了变量 usernamename。 这些变量可以在这里定义。
    电子邮件收件人列表

    若要向大型组发送通知,你可以使用 RecipientLists。 你可以使用以下命令对它们进行 register:

    $notificationManager->addRecipientList('administrators', [1,2,3,4]);

    现在我们已经创建了一个名为 administrators的收件人列表。

    当我们发送新通知时,可以稍后使用这里选项:

    $notificationManager->notify(['recipientLists'=> ['administrators'], ]);

    现在,用户 1.2.3和将收到通知。

    正在检索通知

    下拉列表

    你可以通过 getNotifications 方法轻松地检索通知。 一些示例:

    // getting a list of all notifications of the current logged in user$this->Notifier->getNotifications();// getting a list of all notifications of the user with id 2$this->Notifier->getNotifications(2);// getting a list of all unread notifications$this->Notifier->allNotificationList(2, true);// getting a list of all read notifications$this->Notifier->allNotificationList(2, false);
    计数

    可以通过 countNotifications 方法来获取读/读通知的计数。 一些示例:

    // getting a number of all notifications of the current logged in user$this->Notifier->countNotifications();// getting a number of all notifications of the user with id 2$this->Notifier->countNotifications(2);// getting a number of all unread notifications$this->Notifier->countNotificationList(2, true);// getting a number of all read notifications$this->Notifier->countNotificationList(2, false);
    标记为已读

    若要将通知标记为已读,可以使用 markAsRead 方法。 一些示例:

    // mark a single notification as read$this->Notifier->markAsRead(500;// mark all notifications of the given user as read$this->Notifier->markAsRead(null, 2);
    电子邮件通知实体

    下列getter可以在通知实体中使用:

    • title - 生成的标题,包括变量。
    • body - 包含变量的生成的主体。
    • unread - 如果还没有读取通知,则为布尔值。
    • read - 如果已经读取通知,则返回布尔值。

    例如:

    // returns true or false$entity->get('unread');// returns the full output like 'Bob Mulder has posted a new blog named My Great New Post'$entity->get('body');
    通过查看

    你可以执行类似的操作,以在你的视图中使用通知列表:

    $this->set('notifications', $this->Notifier->getNotifications());

    电子邮件通知管理器

    NotificationManager 是插件的经理。 你可以通过以下方式获取一个实例:

    NotificationManager::instance();

    NotificationManager 具有以下命名空间: BakkerijNotifierUtilityNotificationManager

    管理器具有以下可用的方法:

    • notify
    • addRecipientList
    • getRecipientList
    • addTemplate
    • getTemplate

    电子邮件通知组件

    Bakkerij/Notifier.Notifier 组件可以用于控制器:

    publicfunctioninitialize() {parent::initialize();$this->loadComponent('Bakkerij/Notifier.Notifier'); }

    组件具有以下可用的方法:

    • getNotifications
    • countNotifications
    • markAsRead
    • notify

    保持联络

    如果你需要帮助或者有这个插件的想法,可以在 Gitter 聊天。

    请求请求总是受欢迎的 !