lunacms / forums
为您的 Laravel 应用提供论坛
Requires
- php: ^7.4|^8.0
- cviebrock/eloquent-sluggable: ^9.0
- illuminate/database: >=8.0
- illuminate/events: >=8.0
- illuminate/http: >=8.0
- illuminate/support: >=8.0
- kalnoy/nestedset: ^6.0
- miracuthbert/laravel-eloquent-filters: ^1.3
- spatie/laravel-medialibrary: >=8.0
Requires (Dev)
- orchestra/testbench: >=6.0
- phpunit/phpunit: ^9.0
This package is auto-updated.
Last update: 2024-09-25 04:43:18 UTC
README
这是一个以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'
在 AppServiceProvider
的 boot
方法中调用 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
论坛路由
当 mode
为 multi
时,处理论坛功能。
对于post
和put|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
标签
除了index
和store
之外,所有路由都使用slug
作为路由参数。
对于POST
和PATCH
路由,将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。请参阅许可文件以获取更多信息。