letsgoi / nova-attach-many
关联多个 Nova 字段
4.0.0
2024-07-10 09:47 UTC
Requires
- php: ^7.3|^8.0
- laravel/framework: ^8.0|^9.0|^10.0|^11.0
- laravel/nova: ^4.0
This package is not auto-updated.
Last update: 2024-09-18 10:48:00 UTC
README
属于 Many,为 Nova 创建和编辑表单 UI。允许轻松关联关系并包含验证。
安装
composer require letsgoi/nova-attach-many
使用方法
use NovaAttachMany\AttachMany;
public function fields(Request $request) { return [ AttachMany::make('Permissions'), ]; }
您可以明确定义关系和 Nova 资源
AttachMany::make('Field Name', 'relationshipName', RelatedResource::class);
在详情页中显示
此包仅提供创建/编辑视图,而 BelongsToMany 不提供。
应使用 BelongsToMany 在详情视图中显示表格。
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)
开发
安装依赖项
docker compose run node npm install docker compose run composer install docker compose run node npm run nova:install
编译生产环境的资源
docker compose run node npm run production
作者
嗨 👋,我是 Brian D. 我创建了此 Nova 包 以及其他
希望您觉得它有用。欢迎提供反馈。
在推特上关注我: @im_brian_d


