matthewbdaly/laravel-comments

简单的 Laravel 评论系统

1.1.8 2018-10-28 12:31 UTC

This package is auto-updated.

Last update: 2024-08-28 07:29:06 UTC


README

Build Status Coverage Status

简单的评论系统,灵感来源于 Django 的评论系统。允许将评论附加到对象上,并允许用户标记评论以引起管理员的注意。

安装

composer require matthewbdaly/laravel-comments

您还需要运行 php artisan migrate 来设置所需的数据库表。

用法

要允许评论附加到对象上,请将特质 Matthewbdaly\LaravelComments\Eloquent\Traits\Commentable 添加到它。这样,对象将具有一个 comments 多态关系。

视图

该包包含一个用于提交评论的视图,名为 comments::comments,可以在另一个视图中按以下方式包含

@include('comments::comments', ['parent' => $post])

parent 的值必须是一个可评论对象的实例(例如,一篇文章)。视图还包括一个用于标记评论的表单。

显然,如果您愿意,可以覆盖此视图以包含您自己的内容。

该包还包括以下视图

  • comments::commentsubmitted
  • comments::flagsubmitted

这些视图仅用于确认已收到评论或标记,但功能相对基本,因此您可以随时按需替换它们。

当然,您可以创建自己的路由和控制器来创建、查看和标记评论,如果您希望构建一个允许向对象添加评论的 RESTful API,可以直接使用这些模型

  • Matthewbdaly\LaravelComments\Eloquent\Models\Comment
  • Matthewbdaly\LaravelComments\Eloquent\Models\Comment\Flag

我建议您使用以下存储库

  • Matthewbdaly\LaravelComments\Contracts\Repositories\Comment
  • Matthewbdaly\LaravelComments\Contracts\Repositories\Comment\Flag

这些存储库使用 matthewbdaly/laravel-repositories,因此对装饰的存储库实现了缓存,使得确保模型得到适当的缓存变得简单。

事件

您可以设置以下事件的监听器

  • Matthewbdaly\LaravelComments\Events\CommentBeingReceived

在保存评论之前触发。该包默认不验证评论,但您可以使用此功能使用您喜欢的任何方法验证评论(例如,使用 Akismet 检查,检查链接),或在其保存之前对其进行处理(例如,通过 Markdown 解析器)。

  • Matthewbdaly\LaravelComments\Events\CommentReceived

在提交新评论时触发。这有助于创建某种通知,例如短信、电子邮件、推送通知等。

  • Matthewbdaly\LaravelComments\Events\CommentBeingFlagged

在保存评论标记之前触发。对于在保存之前处理标记很有用。

  • Matthewbdaly\LaravelComments\Events\CommentFlagged

在评论被标记为管理员关注后触发。您可以使用此事件发送最合适的通知(例如,电子邮件、Slack、短信)。