anil / comments
Requires
- erusev/parsedown: ^1.7
- illuminate/database: ^8.0|^9.0|^10.0|^11.0
- illuminate/http: ^8.0|^9.0|^10.0|^11.0
- illuminate/pagination: ^8.0|^9.0|^10.0|^11.0
- illuminate/queue: ^8.0|^9.0|^10.0|^11.0
- illuminate/routing: ^8.0|^9.0|^10.0|^11.0
- illuminate/support: ^8.0|^9.0|^10.0|^11.0
- spatie/laravel-honeypot: ^4.4
This package is auto-updated.
Last update: 2024-08-31 00:31:47 UTC
README
Comments是一个Laravel包。使用它,您可以轻松地为您的应用程序实现原生评论。
概述
此包可用于对您应用程序中的任何模型进行评论。
所有评论都存储在一个表中,其中包含内容的多态关系以及发表评论的用户的多态关系。
功能
- 查看评论
- 创建评论
- 删除评论
- 编辑评论
- 回复评论
- 授权规则
- 支持本地化
- 触发事件
- 路由、控制器、评论、迁移和视图自定义
- 支持非整数字段ID
- 支持多个用户模型
- 解决N+1查询问题
- 评论审批(可选)
- 访客评论(可选)
- 分页(可选)
- 软删除(可选)
- 与自定义ID列协同工作
- 可选地加载包迁移[新功能]
- 配置最大缩进级别[新功能]
屏幕截图
以下是一些截图。
无评论 & 访客
无评论 & 登录
一条评论
一条评论编辑表单
来自不同用户的两条评论
教程与文章
我计划扩展此章节,加入更多教程和文章。如果您为此包写了些什么,请告诉我,这样我可以更新此章节。
屏幕录像
- 在Laravel应用程序中添加评论,作者:Andre Madarang。
安装
从命令行
composer require anil/comments
运行迁移
我们需要创建评论表。
php artisan migrate
将Commenter特质添加到您的User模型中
将Commenter特质添加到您的User模型中,以便您可以检索用户的评论
use Anil\Comments\Commenter; class User extends Authenticatable { use Notifiable, Commenter; }
将Commentable特质添加到模型中
将Commentable特质添加到您希望启用评论的模型中
use Anil\Comments\Commentable; class Product extends Model { use Commentable; }
发布配置 & 配置(可选)
发布配置文件(可选)
php artisan vendor:publish --provider="Anil\Comments\ServiceProvider" --tag=config
发布视图(自定义)
默认UI是为Bootstrap 4设计的,但您可以按需更改。
php artisan vendor:publish --provider="Anil\Comments\ServiceProvider" --tag=views
发布迁移(自定义)
您可以发布迁移以允许您对表有更多控制
php artisan vendor:publish --provider="Anil\Comments\ServiceProvider" --tag=migrations
发布翻译(自定义)
该包目前只支持英语,但我欢迎其他语言的PR。
php artisan vendor:publish --provider="Anil\Comments\ServiceProvider" --tag=translations
使用方法
在您想要显示评论的视图中放置此代码并修改它
@comments(['model' => $book])
在上面的例子中,我们将commentable_type设置为书的类。我们还传递了commentable_id,即书的id,这样我们就可以知道评论与哪本书相关。在幕后,该包检测当前登录的用户(如果有)。
如果您打开包含上述代码的视图页面,您应该看到一个工作的评论表单。
仅查看已批准的评论
要仅查看已批准的评论,请使用此代码
@comments([
'model' => $book,
'approved' => true
])
分页评论
分页仅按顶级评论进行分页,这意味着如果您指定每页的评论数是1,并且有一个评论有100条回复,它将显示那个评论及其所有回复。
无法以其他方式完成,因为如果按所有评论(父级和子级)进行分页,您将得到空白页面,因为评论组件首先循环父级评论,然后使用递归进行回复。
要使用分页,请使用以下代码:
@comments([
'model' => $user,
'perPage' => 2
])
将 2 替换为您想要的任何数字。
配置最大缩进级别
默认情况下,回复会缩进到三级。之后,它们会在该级别“合并”。
- 0
- 1
- 2
- 3
您可以这样配置最大缩进级别:
@comments([
'model' => $user,
'maxIndentationLevel' => 1
])
事件
此包通过触发事件来通知您何时发生某些事情。
Anil\Comments\Events\CommentCreatedAnil\Comments\Events\CommentUpdatedAnil\Comments\Events\CommentDeleted
REST API
要更改控制器或路由,请参阅配置文件。
Route::post('comments', '\Anil\Comments\CommentController@store')->name('comments.store');
Route::delete('comments/{comment}', '\Anil\Comments\CommentController@destroy')->name('comments.destroy');
Route::put('comments/{comment}', '\Anil\Comments\CommentController@update')->name('comments.update');
Route::post('comments/{comment}', '\Anil\Comments\CommentController@reply')->name('comments.reply');
POST /comments
请求数据
'commentable_type' => 'required|string',
'commentable_id' => 'required|string|min:1',
'message' => 'required|string'
PUT /comments/{comment}
- {comment} - 评论ID。
请求数据
'message' => 'required|string'
POST /comments/{comment}
- {comment} - 评论ID。
请求数据
'message' => 'required|string'
许可协议
评论是开源软件,受MIT许可协议许可。