mateusz-peczkowski/nova-heartbeat-resource-field

资源心跳,防止多人同时编辑同一资源

1.0.5 2024-07-04 22:26 UTC

This package is auto-updated.

Last update: 2024-09-04 22:54:02 UTC


README

NovaHeartbeatResourceField

心跳资源字段

本软件包提供了一个自定义的Nova字段,用于监控谁正在编辑当前资源。

在列表/详细信息页面,将显示当前正在编辑的人员信息,同时阻止其他人员编辑同一资源,以避免更改重叠。

适用于Laravel Nova ^4。

安装

您可以通过composer安装此软件包

composer require mateusz-peczkowski/nova-heartbeat-resource-field

迁移

安装后,您需要运行迁移以创建存储心跳数据的表。

php artisan migrate

发布软件包(可选)

发布配置文件以自定义软件包设置(详细信息请参阅下方)。

php artisan vendor:publish --provider="MateuszPeczkowski\NovaHeartbeatResourceField\HeartbeatResourceServiceProvider"

配置

本软件包提供了一个配置文件,允许您自定义软件包设置。

return [
    'table_name'            => 'nova_heartbeats',
    'heartbeat_model'       => \MateuszPeczkowski\NovaHeartbeatResourceField\Models\HeartbeatResource::class,
    'heartbeat_interval'    => env('NOVA_HEARTBEAT_INTERVAL', 5 * 1000), // 5 seconds
    'heartbeat_timeout'     => env('NOVA_HEARTBEAT_TIMEOUT', 60 * 1000), // 1 minute
    'heartbeat_guard'       => 'web',
    'heartbeat_guard_name'  => 'name',
    'heartbeat_guard_email' => 'email',
    'heartbeat_avatar_url'  => null,
];

使用方法

Nova 资源字段

要将此字段安装到您的Nova资源中,您需要将以下代码添加到您的资源中的fields方法。

use MateuszPeczkowski\NovaHeartbeatResourceField\NovaHeartbeatResourceField;

NovaHeartbeatResourceField::make('Heartbeat')
    ->resourceId($this->id),

可选地,您可以通过添加以下代码允许重新获取资源

use MateuszPeczkowski\NovaHeartbeatResourceField\NovaHeartbeatResourceField;

NovaHeartbeatResourceField::make('Heartbeat')
    ->resourceId($this->id)
    ->allowRetake(),

然后在详情视图中,您将有一个额外的按钮来重新获取资源。

Nova 资源特质

将此特质添加到您的Nova资源中

use MateuszPeczkowski\NovaHeartbeatResourceField\Traits\HasNovaHeartbeats;

class YourResource extends Resource
{
    use HasNovaHeartbeats;
}

模型特质

将此特质添加到您的模型中

use MateuszPeczkowski\NovaHeartbeatResourceField\Traits\HasHeartbeats;

class YourModel extends Model
{
    use HasHeartbeats;
}

清除过期的心跳(推荐)

如果删除心跳失败,您可以使用以下命令删除所有超过超时时间的心跳。

$schedule->command('heartbeat:clear-expired')->everyMinute();