letsgoi/nova-attach-many

关联多个 Nova 字段

4.0.0 2024-07-10 09:47 UTC

This package is not auto-updated.

Last update: 2024-09-18 10:48:00 UTC


README

Latest Version on Github Total Downloads Twitter Follow

属于 Many,为 Nova 创建和编辑表单 UI。允许轻松关联关系并包含验证。

attach-many

安装

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