andreaselia / laravel-firefly
为 Laravel 提供的简单论坛包。
Requires
- php: ^8.0
- illuminate/config: ^8.0|^9.0|^10.0
- illuminate/contracts: ^8.0|^9.0|^10.0
- illuminate/routing: ^8.0|^9.0|^10.0
- illuminate/support: ^8.0|^9.0|^10.0
- spatie/laravel-sluggable: ^3.4.2
Requires (Dev)
- orchestra/testbench: ^8.0
- phpunit/phpunit: ^10.0
README
Laravel Firefly
Firefly 是一个为 Laravel 设计的简单论坛包,旨在便于使用和扩展。
该包包含前端,但通过发布包的资产,您可以灵活地自定义可用的模板,使其与您的当前应用程序模板相匹配,如果您需要的话。
安装
安装包
composer require andreaselia/laravel-firefly
发布包文件(配置、迁移、资产和视图)
php artisan vendor:publish --provider="Firefly\FireflyServiceProvider"
运行迁移
php artisan migrate
将 FireflyUser 特性添加到您的 User 模型
<?php namespace App\Models; use Firefly\Traits\FireflyUser; use Illuminate\Notifications\Notifiable; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable { use HasFactory, Notifiable, FireflyUser; }
可选功能
关注者
您可以通过在配置中添加/更新标志来启用用户“关注”讨论
'features' => [ 'watchers' => true, // ... ],
这将为关注者提供在新帖子发布在讨论中的通知
所见即所得编辑器
所见即所得编辑器使用 Quill 库,文档可以在这里找到。
您可以通过在配置中添加/更新标志来启用所见即所得编辑器
'features' => [ // ... 'wysiwyg' => [ 'enabled' => true, 'theme' => 'snow', // More about themes at https://quilljs.com/docs/themes/ 'toolbar_options' => [ // Docs at https://quilljs.com/docs/modules/toolbar/ ['bold', 'italic', 'underline', 'strike'], [['list' => 'ordered'], ['list'=> 'bullet']], ['clean'], ], ], // ... ],
雪主题和基本编辑控件在配置中提供,但可以根据您的需求进行修改。
正确帖子
您可以通过将帖子标记为“正确”来启用标记帖子,表示它回答了问题或是一个推广帖子。正确的帖子将被提升到顶部,直接在初始帖子下方。
注意:如果您在现有安装上启用此功能,请确保运行数据库迁移,然后运行 posts:set-initial-flag
命令,以使数据库保持最新状态。这也引入了两个新的策略,mark
和 unmark
。
'features' => [ 'correct_posts' => true, // ... ],
反应
启用反应允许用户使用表情符号对帖子进行反应。这类似于 Discord、Slack 和其他流行的消息系统。点击反应将将其添加到帖子中。再次点击相同的反应将移除它。
如果您正在运行较旧版本或较旧的 MySQL 字符集或其他不支持本地表情符号的数据库,启用 convert
标志将转换表情符号到和从 HTML 实体,以便它们在后端正确存储。如果您正在使用 utf8mb4
字符集或更新的版本,则不需要此操作。
注意:如果您在现有安装上启用此功能,请确保运行数据库迁移。这也引入了一个新的策略 react
。
'features' => [ 'reactions' => [ 'enabled' => true, 'convert' => true ] // ... ],
策略
默认情况下,Firefly 策略非常宽容。为了为您自己的应用程序自定义权限,请使用您的 AuthServiceProvider
文件,按照以下步骤覆盖策略。
- 通过
php artisan make:policy MyGroupPolicy
创建您的策略文件 - 在生成的类中扩展基本 Firefly 策略
<?php namespace App\Policies; use Illuminate\Auth\Access\HandlesAuthorization; use Firefly\Policies\GroupPolicy; class MyGroupPolicy extends GroupPolicy { // ...
- 实现您想要的策略(使用
vendor/andreaselia/laravel-firefly/src/Policies
中的策略进行参考) - 按照如下方式更新
app/Providers/AuthServiceProvider.php
文件中的策略数组
<?php use Firefly\Models\Group; // ... protected $policies = [ Group::class => 'App\Policies\MyGroupPolicy', ];
有关 Laravel 策略的更多信息,请访问这里。
贡献
欢迎您提交拉取请求,或者如果您不想这样做 - 创建一个问题,以便其他人可以将其捡起。