我已将Unisharp/Laravel-filemanager用于我的文件管理器系统。当用户创建文件夹时,我需要一个事件来调用函数。我该怎么做?
我试图在他们的网站Laravel File manager events上找到一些关于它的信息,但我找不到任何对我有帮助的东西。你对我有什么解决方案或建议吗?
我已将Unisharp/Laravel-filemanager用于我的文件管理器系统。当用户创建文件夹时,我需要一个事件来调用函数。我该怎么做?
我试图在他们的网站Laravel File manager events上找到一些关于它的信息,但我找不到任何对我有帮助的东西。你对我有什么解决方案或建议吗?
我检查了Unisharp/Laravel-filemanager包,没有相关事件,即FolderCreated
,这里是包使用的所有事件的列表,因此您必须使用以下步骤定义自定义事件:
第 1 步:创建您的自定义事件,
php artisan make:event FolderCreatedByUser
第2步:
在事件类中定义对用户和文件夹的引用:
class FolderCreatedByUser
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public $folder;
public $user;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct(User $user, $folder)
{
$this->user = $user;
$this->folder= $folder;
}
/**
* Get the channels the event should broadcast on.
*
* @return \Illuminate\Broadcasting\Channel|array
*/
public function broadcastOn()
{
return new PrivateChannel('user_folders');
}
}
第 3 步:
FolderCreatedByUser
为事件添加监听器:
php artisan make:listener UserFolderCreationListener
<?php
namespace App\Listeners;
use App\Events\FolderCreatedByUser;
class UserFolderCreationListener
{
/**
* Handle the event.
*
* @param object $event
* @return void
*/
public function handle(FolderCreatedByUser $event)
{
$user = $event->user;
$folder = $event->folder;
// call your function here!
}
}
第 4 步:
打开app/Providers/EventServiceProvider
并注册事件的侦听器:
class EventServiceProvider extends ServiceProvider
{
/**
* The event listener mappings for the application.
*
* @var array
*/
protected $listen = [
FolderCreatedByUser::class => [
UserFolderCreationListener::class
],
.
.
.
最后一步
当用户创建一个新文件夹时,发送一个事件:
FolderCreatedByUser::dispatch(auth()->user(), $folder);