fayne / laravel-filament-entity-reference
Authorized polymorphic entity reference selection for Filament forms.
Package info
github.com/Fayne/laravel-filament-entity-reference
pkg:composer/fayne/laravel-filament-entity-reference
Requires
- php: ^8.4
- filament/forms: ^5.0
- illuminate/database: ^13.0
- illuminate/support: ^13.0
Requires (Dev)
- laravel/pint: ^1.27
- orchestra/testbench: ^11.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-11-05 07:55:11 UTC
README
Laravel Filament Entity Reference
简体中文 | English
实体引用字段,适用于 PHP 8.4+、Laravel 13、Filament 5。
功能与边界
使用明确的别名到模型映射,提供多态引用选择;搜索、已有值回显和提交验证统一应用查询范围和记录授权。
安装
先在宿主 Composer 配置本私有包及所需 fayne/* 依赖的软件源,再执行:
composer require fayne/laravel-filament-entity-reference
Laravel 自动发现服务提供者。仅提供字段的包无需注册 Panel 插件;业务包按下面的示例注册。依赖版本以 composer.json 为准,不要复制开发宿主的私有仓库凭据。
使用与配置
use App\Models\Product; use Fayne\EntityReference\Forms\Components\EntityReferenceSelect; use Illuminate\Database\Eloquent\Model; EntityReferenceSelect::make('related') ->references(['product' => ['model' => Product::class, 'label' => 'title']]) ->queryUsing(fn (string $model, string $alias) => $model::query()) ->authorizeUsing(fn (Model $record) => auth()->user()?->can('view', $record) ?? false);
宿主需提供 Product 模型及 Policy,并在查询回调中限定站点或租户范围。保存值仅包含许可的模型别名与记录键,例如 ['model' => 'product', 'id' => 1];JSON 字段配置 array cast。调用 references($map, multiple: true) 可启用多选。不要接受客户端传入任意模型类名。
测试与上线
本包已提供独立 Testbench 启动测试(composer test);在宿主验证字段渲染、输入、保存后回显、无效值拒绝和权限边界。不要将文档检查视为运行时验收。
合作与贡献
通过 Issue 描述需求或缺陷,提供复现步骤、版本和预期行为;提交合并请求时补充相关验证,并说明尚未验证的环境。请勿提交密钥或业务敏感数据。商业合作及授权请联系 Fayne Guo。
许可证
采用专有许可证。未经授权不得复制、分发或使用;第三方依赖仍遵循各自许可证。
开发与安全
开发与 CI 约定 · 安全报告。运行 composer check 检查语法和格式;有独立套件时同时运行测试。包不提交 composer.lock。