lunacms/forums

为您的 Laravel 应用提供论坛

0.0.2-alpha 2023-02-25 00:27 UTC

This package is auto-updated.

Last update: 2024-09-25 04:43:18 UTC


README

Latest Version on Packagist Total Downloads GitHub Actions

这是一个以API为先的论坛包,允许在Laravel应用中运行单个论坛或多个论坛。支持Laravel 8及以上版本。

安装

您可以通过composer安装此包

composer require lunacms/forums

然后运行迁移命令

php artisan migrate

配置

要自定义包的使用,请使用发布命令将包配置复制到您本地的配置中

php artisan vendor:publish --tag=forums-config

您可以在那里配置您的模型、资源以及多态映射(用于多态关系)。

用法

特质

  • CanCommentTrait 用于模型发表、更新、回复或删除评论。
  • OwnsForumTrait 用于模型拥有论坛。

将这两个特质添加到您的 User 模型中。

默认情况下,该包使用经过身份验证的请求用户作为论坛、帖子和评论的所有者。

单模式运行

config/forums.php 中将 mode 选项值设置为 single

mode='single'

AppServiceProviderboot 方法中调用 runInSingleMode()

Forums::runInSingleMode();

模型仓库

该包提供模型仓库以实现与底层API的交互。

包含的仓库有

  • ForumRepository:处理基本 论坛 CRUD 操作。
  • PostRepository:处理基本 帖子 CRUD 操作。
  • TagRepository:处理基本 标签 CRUD 操作。
  • CommentRepository:处理基本 评论 CRUD 操作。

可用方法

  • all():获取给定实体的所有记录。
  • find($id):通过给定的 "id" 查找记录。
  • findWhere($column, $value):通过给定的 "column" 值查找记录。
  • findWhereFirst($column, $value):查找具有给定 "column" 值的第一个记录。
  • paginate($perPage = 10):对给定实体的记录进行分页。
  • create(array $data):为给定实体创建记录。
  • update($id, array $data):更新给定实体的记录。
  • delete($id):从实体中删除记录。
  • withCriteria(...$criteria):优化仓库的查询。

如果需要更深入地与API交互,可以使用仓库。

路由

默认情况下,我们已设置路由作为使用此包的最简单方式。

注意:包含的 {CUSTOM_PREFIX} 是一个可以在 forums 配置 route 前缀中更改的前缀。

保护路由

您可以通过在配置文件中的路由设置下设置相关中间件来保护包的路由。

有两个选项

  • middleware:用于设置通用路由和绑定,默认为 web
  • auth_middleware:用于验证创建论坛、帖子和评论的用户。默认为 auth

评论路由

它们接受一个 id 作为参数,并在请求数据中接受 body(除了 destroy)路由。

  • {CUSTOM_PREFIX}/comments/{comment}:处理评论更新;PUT|PATCH

  • {CUSTOM_PREFIX}/comments/{comment}:处理评论删除;DELETE

  • {CUSTOM_PREFIX}/comments/{comment}/replies:处理评论回复存储;POST

论坛路由

modemulti 时,处理论坛功能。

对于postput|patch路由,需要一个name,可选的tags数组。

在显示、更新或删除时,将slug作为路由参数传递。

  • {CUSTOM_PREFIX}/forums:处理论坛列表;GET|HEAD

  • {CUSTOM_PREFIX}/forums:处理论坛存储;POST

  • {CUSTOM_PREFIX}/forums/{slug}:处理显示单个论坛数据;GET|HEAD

  • {CUSTOM_PREFIX}/forums/{slug}:处理论坛更新;PUT|PATCH

  • {CUSTOM_PREFIX}/forums/{slug}:处理论坛销毁;DELETE

帖子路由(多模式)

论坛slug作为所有以下路由的参数传递,例如替换forums:slug

单个帖子显示路由需要额外的slug,使用$post->slug

  • {CUSTOM_PREFIX}/forums/{forum:slug}/posts:处理论坛帖子列表;GET|HEAD

  • {CUSTOM_PREFIX}/forums/{forum:slug}/posts:处理论坛帖子存储;POST

  • {CUSTOM_PREFIX}/forums/{forum:slug}/posts/{slug}:处理显示论坛中的单个帖子;GET|HEAD

帖子路由(单模式)

单个帖子显示路由需要帖子slug

  • {CUSTOM_PREFIX}/posts:处理帖子列表;GET|HEAD

  • {CUSTOM_PREFIX}/posts:处理帖子存储;POST

  • {CUSTOM_PREFIX}/posts/{slug}:处理显示论坛帖子;GET|HEAD

帖子路由(两种模式共享)

帖子slug作为路由参数。

  • {CUSTOM_PREFIX}/posts/{slug}:处理帖子更新;PUT|PATCH

  • {CUSTOM_PREFIX}/posts/{slug}:处理帖子删除;DELETE

帖子评论路由(两种模式共享)

帖子slug作为路由参数;body作为POST路由的请求数据。

  • {CUSTOM_PREFIX}/posts/{slug}/comments:处理列出帖子的评论;GET|HEAD

  • {CUSTOM_PREFIX}/posts/{slug}/comments:处理创建帖子的评论;POST

标签

除了indexstore之外,所有路由都使用slug作为路由参数。

对于POSTPATCH路由,将name作为请求数据传递。

  • {CUSTOM_PREFIX}/tags:处理标签列表;GET|HEAD

  • {CUSTOM_PREFIX}/tags:处理标签存储;POST

  • {CUSTOM_PREFIX}/tags/{tag}:处理单个标签显示;GET|HEAD

  • {CUSTOM_PREFIX}/tags/{tag}:处理标签更新;PUT|PATCH

  • {CUSTOM_PREFIX}/tags/{tag}:处理标签销毁;DELETE

测试

composer test

变更日志

请参阅变更日志以获取有关最近更改的更多信息。

贡献

请参阅贡献指南以获取详细信息。

安全

如果您发现任何安全相关的问题,请通过电子邮件miracuthbert@gmail.com报告,而不是使用问题跟踪器。

鸣谢

许可

GNU GPLv3。请参阅许可文件以获取更多信息。