haiderlatitude/comments

Laravel 的评论

资助包维护!
Patreon

安装: 31

依赖项: 0

建议者: 0

安全: 0

星星: 0

关注者: 0

分支: 142

语言:Blade

dev-master 2024-02-13 13:20 UTC

This package is auto-updated.

Last update: 2024-09-13 14:42:16 UTC


README

Comments 是一个 Laravel 包。使用它,您可以轻松地为您的应用程序实现原生评论。

概述

此包可用于对应用程序中的任何模型进行评论。

所有评论都存储在单个表中,具有用于内容和发布评论的用户的多态关系。

功能

  • Tailwind 和 Bootstrap 4 支持 [NEW]
  • 查看评论
  • 创建评论
  • 删除评论
  • 编辑评论
  • 回复评论
  • 授权规则
  • 支持本地化
  • 派发事件
  • 路由、控制器、评论、迁移 & 视图定制
  • 支持非整型 ID
  • 支持多个用户模型
  • 解决 N+1 查询问题
  • 评论批准(可选)
  • 访客评论(可选)
  • 分页(可选)
  • 软删除(可选)
  • 与自定义 ID 列一起工作
  • 可选加载包迁移 [NEW]
  • 配置最大缩进级别 [NEW]

屏幕截图

以下是几张屏幕截图。

没有评论 & 访客

没有评论 & 登录用户

一条评论

一条评论编辑表单

来自不同用户的两条评论

教程 & 文章

我计划在此章节中添加更多教程和文章。如果您为此包写了些什么,请让我知道,这样我可以更新此章节。

屏幕录像

安装

从命令行

composer require haiderlatitude/comments

运行迁移

我们需要创建评论表。

php artisan migrate

将 Commenter 特性添加到您的 User 模型中

Commenter 特性添加到您的 User 模型中,以便您可以检索用户的评论

use Haider\Comments\Commenter;

class User extends Authenticatable
{
    use Notifiable, Commenter;
}

将 Commentable 特性添加到模型中

Commentable 特性添加到您希望启用评论的模型中

use Haider\Comments\Commentable;

class Product extends Model
{
    use Commentable;
}

发布配置 & 配置(可选)

发布配置文件(可选)

php artisan vendor:publish --provider="Haider\Comments\ServiceProvider" --tag=config

发布视图(定制)

默认 UI 是为 Tailwind CSS 制作的;Bootstrap 4 也可用,您可以通过发布视图进行更改。

php artisan vendor:publish --provider="Haider\Comments\ServiceProvider" --tag=views

发布迁移(定制)

您可以发布迁移以允许您对表有更多控制。

php artisan vendor:publish --provider="Haider\Comments\ServiceProvider" --tag=migrations

发布翻译(定制)

该包目前仅支持英语,但我愿意接受其他语言的 PR。

php artisan vendor:publish --provider="Haider\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
])

更改主题为 bootstrap

默认情况下,ui是为 tailwind设计的,可以切换到 bootstrap。

@comments([
    'model' => $user,
    'ui' => 'bootstrap'
])

事件

此包会触发事件,以便您知道何时发生某些事情。

  • Haider\Comments\Events\CommentCreated
  • Haider\Comments\Events\CommentUpdated
  • Haider\Comments\Events\CommentDeleted

REST API

要更改控制器或路由,请查看配置。

Route::post('comments', '\Haider\Comments\CommentController@store')->name('comments.store');
Route::delete('comments/{comment}', '\Haider\Comments\CommentController@destroy')->name('comments.destroy');
Route::put('comments/{comment}', '\Haider\Comments\CommentController@update')->name('comments.update');
Route::post('comments/{comment}/status', '\Haider\Comments\CommentController@status')->name('comments.status');
Route::post('comments/{comment}', '\Haider\Comments\CommentController@reply')->name('comments.reply');

POST /comments

请求数据

'commentable_type' => 'required|string',
'commentable_id' => 'required|string|min:1',
'message' => 'required|string'

POST /comments/{comment}/status

请求数据

'approved' => 'reqruied|boolean',

PUT /comments/{comment}

  • {comment} - 评论 ID。

请求数据

'message' => 'required|string'

POST /comments/{comment}

  • {comment} - 评论 ID。

请求数据

'message' => 'required|string'

从旧版本升级(故障排除)

在创建问题之前,请阅读这篇文档

赞助商与支持者

我想向以下赞助商和支持者表示感谢,他们为我的开源之旅提供了资金。如果您有兴趣成为赞助商或支持者,请访问支持者页面

贡献

感谢您考虑为 Comments 贡献!贡献指南可在此处找到。

行为准则

为了确保开源社区对所有人都表示欢迎,请查阅并遵守行为准则

许可证

Comments 是开源软件,采用MIT 许可证