mateusz-peczkowski / nova-heartbeat-resource-field
资源心跳,防止多人同时编辑同一资源
1.0.5
2024-07-04 22:26 UTC
Requires
- php: >=8.0
- laravel/nova: ^4.0
- outl1ne/nova-translations-loader: ^5.0
README
心跳资源字段
本软件包提供了一个自定义的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();