blendbyte / nova-attach-many
附件多Nova字段
1.6.1
2024-03-11 03:56 UTC
Requires
- php: ^7.4|^8.0
- laravel/nova: ^4.0
README
属于许多创建和编辑表单UI的Nova。允许轻松关联关系,并包括验证。
安装
composer require blendbyte/nova-attach-many
使用方法
use NovaAttachMany\AttachMany;
public function fields(Request $request) { return [ AttachMany::make('Permissions'), ]; }
您可以显式定义关系和Nova资源
AttachMany::make('Field Name', 'relationshipName', RelatedResource::class);
枢纽值
您可以为任何枢纽值传递额外的参数。
有关详细信息,请参阅https://laravel.net.cn/docs/9.x/eloquent-relationships#syncing-associations
AttachMany::make('Field Name', 'relationshipName', RelatedResource::class, ['pivot_name' => value]);
详细展示
此包仅提供属于多对多关系时没有的创建/编辑视图。
应该使用属于多对多关系来在详细视图中显示表格。
public function fields(Request $request) { return [ AttachMany::make('Permissions'), BelongsToMany::make('Permissions'), ]; }
验证
您可以设置最小值、最大值、大小或自定义规则对象
->rules('min:5', 'max:10', 'size:10', new CustomRule)
选项
以下是一些自定义选项
->showCounts()
显示 "已选/总数"->showPreview()
只显示所选内容->hideToolbar()
删除搜索和全选->height('500px')
设置自定义高度->fullWidth()
设置为全宽->showRefresh()
重新请求资源->showSubtitle()
显示资源的副标题->help('<b>提示:</b>帮助文本')
设置帮助文本
所有选项演示
相关
可附件资源将通过relatableQuery()进行过滤,因此您可以选择哪些资源可以附加
通知变更
您可以向资源添加一个方法来通知已发生的更改
该方法必须是属性名称的驼峰式版本,后跟Synced
。例如
public function fields(Request $request) { return [ AttachMany::make('Permissions'), ]; }
public function permissionsSynced(array $changes) { $changes['attached']; // An array of IDs of attached models $changes['detached']; // An array of IDs of detached models $changes['updated']; // An array of IDs of updated models }
授权
此字段也尊重策略:即角色/权限
- 角色策略:attachAnyPermission($user, $role)
- 角色策略:attachPermission($user, $role, $permission)
- 权限策略:viewAny($user)