kikter / discussions

此包的最新版本(dev-main)没有提供许可证信息。

Discussions 是一个简单的 Laravel 讨论包

dev-main 2023-05-07 14:00 UTC

This package is auto-updated.

Last update: 2024-09-07 17:09:24 UTC


README

警告:此包仍在开发中,尚未准备好使用。

安装

此包假设您已经创建了一个 新的 Laravel 应用程序 并在您的应用程序中包含了 TALL Stack 预设

在此包中,我们还使用了 Filament Notifications 包,用于显示警报通知。

Notification Animated GIF

安装此包:我们可以执行以下操作

在您的应用程序根目录下运行

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 事件的监听器,请按照以下步骤操作

  1. 创建一个监听器类 在合适的目录中创建一个新的监听器类(例如,app/Listeners)。该类应实现 handle() 方法,该方法将接收 NewDiscussionCreated 事件作为参数。

    <?php
    namespace App\Listeners;
    
    use Foundationapp\Discussions\Events\NewDiscussionCreated;
    
    class CustomNewDiscussionListener
    {
        public function handle(NewDiscussionCreated $event)
        {
            // Your custom logic here
        }
    }
  2. 实现您的自定义逻辑 在 handle() 方法内部,您可以访问事件的讨论属性并根据需要执行任何自定义逻辑。

    public function handle(NewDiscussionCreated $event)
    {
        $discussion = $event->discussion;
        // Perform custom actions based on the new discussion
    }
  3. 注册监听器 要注册监听器,请将其添加到位于 app/Providers/EventServiceProvider.php 的 EventServiceProvider 类的 listen 属性中。

    protected $listen = [
        NewDiscussionCreated::class => [
            CustomNewDiscussionListener::class,
        ],
    ];
  4. (可选) 排队监听器 如果您希望监听器被排队以进行异步处理,您可以在监听器类中实现 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
        }
    }