matthewbdaly / laravel-comments
简单的 Laravel 评论系统
Requires
Requires (Dev)
- matthewbdaly/artisan-standalone: 0.0.*
- mockery/mockery: ~1.0
- orchestra/testbench: 3.6
- orchestra/testbench-browser-kit: ~3.6
- php-coveralls/php-coveralls: ^2.1
- phpstan/phpstan: ^0.10.5
- phpunit/phpunit: ^7.0
- psy/psysh: ^0.9.8
- sebastian/phpcpd: ^4.0
- squizlabs/php_codesniffer: ^3.3
README
简单的评论系统,灵感来源于 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、短信)。