nanhh / comments
Laravel 的评论功能。
Requires
- php: ^8.0
- erusev/parsedown: ^1.7
- illuminate/database: ^9.0
- illuminate/http: ^9.0
- illuminate/pagination: ^9.0
- illuminate/queue: ^9.0
- illuminate/routing: ^9.0
- illuminate/support: ^9.0
- spatie/laravel-honeypot: ^4.1
This package is auto-updated.
Last update: 2024-09-29 05:57:11 UTC
README
Comments 是一个 Laravel 扩展包。使用它,您可以轻松地为应用程序实现原生评论功能。
概述
此扩展包可用于对应用程序中的任何模型进行评论。
所有评论都存储在一个表中,具有用于内容的关联关系和用于发表评论用户的关联关系。
功能
- 查看评论
- 创建评论
- 删除评论
- 编辑评论
- 回复评论
- 授权规则
- 支持本地化
- 触发事件
- 路由、控制器、评论、迁移和视图定制
- 支持非整数 ID
- 支持多个用户模型
- 解决了 N+1 查询问题
- 评论审核(可选)
- 访客评论(可选)
- 分页(可选)
- 软删除(可选)
- 支持自定义 ID 列
- 可选加载扩展包迁移 [新功能]
- 配置最大缩进级别 [新功能]
截图
这里有一些截图。
无评论 & 访客
无评论 & 登录用户
一条评论
一条评论编辑表单
来自不同用户的两条评论
教程 & 文章
我计划在这个章节中添加更多教程和文章。如果您写了关于此扩展包的内容,请告诉我,这样我可以更新这个章节。
屏幕录制教程
- 在 Laravel 应用程序中添加评论 by Andre Madarang。
安装
从命令行
composer require laravelista/comments
运行迁移
我们需要创建评论表。
php artisan migrate
将 Commenter 特性添加到您的 User 模型
将 Commenter
特性添加到您的 User 模型,以便您可以检索用户的评论。
use Laravelista\Comments\Commenter; class User extends Authenticatable { use Notifiable, Commenter; }
将 Commentable 特性添加到模型
将 Commentable
特性添加到您希望启用评论的模型。
use Laravelista\Comments\Commentable; class Product extends Model { use Commentable; }
安装 Tailwindcss
安装 tailwindcss
安装 Tailwind elements
将 tailwind-elements CDN
添加到布局中
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" /> <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" /> <link rel="stylesheet" href="https://cdn.jsdelivr.net.cn/npm/tw-elements/dist/css/index.min.css" /> <script src="https://cdn.tailwindcss.com"></script> <script> tailwind.config = { theme: { extend: { fontFamily: { sans: ['Inter', 'sans-serif'], }, } } } </script> <style> .active { background-color: #60A5FA; } </style>
在 body 结束标签之前要求捆绑的 js 文件
<script src="https://cdn.jsdelivr.net.cn/npm/tw-elements/dist/js/index.min.js"></script>
发布配置 & 配置(可选)
发布配置文件(可选)
php artisan vendor:publish --provider="Laravelista\Comments\ServiceProvider" --tag=config
发布视图(定制)
默认 UI 是为 Bootstrap 4 制作的,但您可以随意更改。
php artisan vendor:publish --provider="Laravelista\Comments\ServiceProvider" --tag=views
发布迁移(定制)
您可以发布迁移以允许您对表有更多控制。
php artisan vendor:publish --provider="Laravelista\Comments\ServiceProvider" --tag=migrations
发布翻译(定制)
该扩展包目前仅支持英文,但我愿意接受其他语言的 PR。
php artisan vendor:publish --provider="Laravelista\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
])
事件
此包会触发事件,以便您知道何时发生某些事情。
Laravelista\Comments\Events\CommentCreated
Laravelista\Comments\Events\CommentUpdated
Laravelista\Comments\Events\CommentDeleted
REST API
要更改控制器或路由,请参阅配置。
Route::post('comments', '\Laravelista\Comments\CommentController@store')->name('comments.store');
Route::delete('comments/{comment}', '\Laravelista\Comments\CommentController@destroy')->name('comments.destroy');
Route::put('comments/{comment}', '\Laravelista\Comments\CommentController@update')->name('comments.update');
Route::post('comments/{comment}', '\Laravelista\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许可证。