discoverydesign / filament-gaze
查看谁正在查看Filament PHP中的资源。
Requires
- filament/filament: ^3.0
- spatie/laravel-package-tools: ^1.15.0
README
👀 查看谁正在查看Filament PHP中的资源 🔭
演示
此软件包允许您显示其他用户何时在Filament PHP中查看相同的资源。
https://packagist.org.cn/packages/discoverydesign/filament-gaze
功能
- 能够查看还有谁正在查看资源。
- 能够将资源锁定给一个编辑器。
- 能够条件性地允许用户控制已锁定的资源。
如何使用
- 使用
composer require discoverydesign/filament-gaze
安装软件包 - 将
\DiscoveryDesign\FilamentGaze\FilamentGazePlugin::make()
添加到您的 Filament 面板提供者中。
$panel->plugins([
\DiscoveryDesign\FilamentGaze\FilamentGazePlugin::make()
])
- 使用
php artisan filament:assets
发布资源。 - 在您的 Filament 资源中导入软件包
use DiscoveryDesign\FilamentGaze\Forms\Components\GazeBanner
。 - 使用
GazeBanner::make()
将GazeBanner
表单组件添加到您的表单中。 - 如有必要,使用
php artisan vendor:publish --tag=filament-gaze-translations
发布翻译文件。
示例
基本示例
<?php namespace App\Filament\Resources; use DiscoveryDesign\FilamentGaze\Forms\Components\GazeBanner; // ... class OrderResource extends Resource { // ... public static function form(Form $form): Form { return $form ->schema([ GazeBanner::make(), // ... ]); } // ... }
轮询计时器示例
GazeBanner::make() ->pollTimer(10),
标识符示例
GazeBanner::make() ->identifier('any-order'),
锁定示例
GazeBanner::make() ->lock()
带控制的锁定示例
GazeBanner::make() ->lock() ->canTakeControl(fn() => auth()->user()->isAdmin())
在创建表单中隐藏注视横幅示例
GazeBanner::make() ->hidden(fn (?Order $record) => $record === null),
还有一个辅助函数
GazeBanner::make() ->hideOnCreate(),
文档
->pollTimer($timeInSecs)
描述
polltimer
可以用来设置浏览器多久通知 Filament 用户仍在查看页面,同时获取其他正在查看的用户列表。建议不要设置得太短,因为这可能导致速率限制问题。但也不要设置得太长,因为这会导致新用户查看页面的更新延迟。
参数
timeInSeconds
- (int) 每次轮询之间的秒数。默认为30秒。
->identifier($fnc)
描述
identifier
被用作此注视横幅的唯一标识符。具有相同标识符的任何其他注视横幅将共享相同的活跃用户列表。如果您想使两个或多个不同的资源共享相同的活跃查看用户列表,这很有用。
参数
fnc
- (可选,闭包 | 字符串) 标识符的名称。默认是资源模型类与模型ID的组合。
->lock($fnc)
描述
lock
可以用来锁定资源,只有当前正在编辑表单的人除外。如果您想防止多人同时编辑相同的资源,这很有用。指定的控制器是第一个访问资源的人,或者已经控制资源的人。如果您在最近访问资源后启用此功能,可能需要运行 php artisan cache:clear
,因为当前缓存的查看者可能没有标记的控制器(这仅是开发中可能出现的问题)。
参数
fnc
- (可选,闭包 | bool) 资源是否可以锁定。
->canTakeControl($fnc)
描述
canTakeControl
可以用来允许用户在资源被其他人锁定时控制该资源。如果您想允许用户控制资源,这很有用。
参数
fnc
- (可选,闭包 | bool) 用户是否可以控制资源。默认为 true。如果传递闭包,它应返回 bool 值。
->hideOnCreate()
描述
hideOnCreate
是一个辅助函数,可以用来在创建表单中隐藏横幅。
自定义
更改图标
要在横幅中自定义图标,您可以使用以下别名
filament-gaze::banner.locked
用于锁图标filament-gaze::banner.view
用于眼睛图标