kikter / discussions
Discussions 是一个简单的 Laravel 讨论包
Requires
- filament/notifications: ^2.0
- livewire/livewire: ^2.12
Requires (Dev)
- orchestra/testbench: ^8.3
- pestphp/pest-plugin-laravel: ^2.0
- pestphp/pest-plugin-livewire: ^2.0
- phpunit/phpunit: ^10.0
This package is auto-updated.
Last update: 2024-09-07 17:09:24 UTC
README
警告:此包仍在开发中,尚未准备好使用。
安装
此包假设您已经创建了一个 新的 Laravel 应用程序 并在您的应用程序中包含了 TALL Stack 预设。
在此包中,我们还使用了 Filament Notifications 包,用于显示警报通知。
要 安装此包:我们可以执行以下操作
在您的应用程序根目录下运行
npm install alpinejs @awcodes/alpine-floating-ui postcss tailwindcss --save-dev
然后添加到您的 main app.js
import AlpineFloatingUI from '@awcodes/alpine-floating-ui'
import NotificationsAlpinePlugin from '../../vendor/filament/notifications/dist/module.esm'
Alpine.plugin(AlpineFloatingUI)
Alpine.plugin(NotificationsAlpinePlugin)
将 filament 的 './vendor/filament/**/*.blade.php'
文件夹添加到您的 tailwind asset 监视器下的 content
此外,在您的 tailwind.config.js 主题中扩展一些新颜色 🎨
const colors = require('tailwindcss/colors')
module.exports = {
content: [
'./resources/**/*.blade.php',
'./vendor/filament/**/*.blade.php',
],
theme: {
extend: {
colors: {
danger: colors.rose,
primary: colors.blue,
success: colors.green,
warning: colors.yellow,
},
},
},
}
最后,在您的 app.blade.php
文件中的 </body>
标签之前添加以下内容
@livewire('notifications')
这就完成了。您现在可以使用讨论包了。
事件
当您想在创建新的讨论或帖子时执行额外操作或触发自定义逻辑(例如向讨论参与者发送电子邮件通知)时,这些事件非常有用。
事件使用
在创建新的讨论后,会触发 event(new NewDiscussionCreated($discussion));
。您可以在应用程序中监听此事件并根据需要执行任何自定义逻辑。同样的规则也适用于在创建新的讨论帖子后触发的 NewDiscussionPostCreated
事件。
为 NewDiscussionCreated
事件创建监听器
要创建一个处理 NewDiscussionCreated
事件的监听器,请按照以下步骤操作
-
创建一个监听器类 在合适的目录中创建一个新的监听器类(例如,
app/Listeners
)。该类应实现handle()
方法,该方法将接收NewDiscussionCreated
事件作为参数。<?php namespace App\Listeners; use Foundationapp\Discussions\Events\NewDiscussionCreated; class CustomNewDiscussionListener { public function handle(NewDiscussionCreated $event) { // Your custom logic here } }
-
实现您的自定义逻辑 在
handle()
方法内部,您可以访问事件的讨论属性并根据需要执行任何自定义逻辑。public function handle(NewDiscussionCreated $event) { $discussion = $event->discussion; // Perform custom actions based on the new discussion }
-
注册监听器 要注册监听器,请将其添加到位于
app/Providers/EventServiceProvider.php
的 EventServiceProvider 类的 listen 属性中。protected $listen = [ NewDiscussionCreated::class => [ CustomNewDiscussionListener::class, ], ];
-
(可选) 排队监听器 如果您希望监听器被排队以进行异步处理,您可以在监听器类中实现 ShouldQueue 接口并使用 Queueable 特性。
<?php namespace App\Listeners; use Foundationapp\Discussions\Events\NewDiscussionCreated; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Queue\InteractsWithQueue; class CustomNewDiscussionListener implements ShouldQueue { use InteractsWithQueue; public function handle(NewDiscussionCreated $event) { // Your custom logic here } }