发送数据时 blade 中的重复数据

duplicate data in blade when send data

我正在尝试在我的编辑中显示我的所有角色 blade 并使用复选框,这会检查是否已检查此角色是否具有此权限。

我的问题是当向这个角色发送数据权限和权限时,所有权限名称都是重复的。

我正在使用 laravel-permission/spatie

设置角色和权限

在我的控制器中我有这个:

public function edit($id)
    {
        $role = Role::find($id);
        $permissions = Permission::all();
        $permissionAssigned = Role::find($id)->givePermissionTo();

        return view('opciones.roles.edit', ['role' => $role, 'permissions' => $permissions, 
                                            'permissionAssigned' => $permissionAssigned["permissions"] ]);
    }

在我的 blade 我有这个:

<h3>Permissions</h3>
                            <div class="row flex-row justify-content-center"> 
                              @foreach($permissions as $permission)
                                @foreach ($permissionAssigned as $asigned)
                                  @if($permission->name == $asigned->name)
                                    <div class="form-check p-4">
                                      <input class="form-check-input" checked type="checkbox" name="permission[]" value="{{ $permission->name }}" id="flexCheckDefault">
                                      <label class="form-check-label" for="flexCheckDefault">{{ $permission->name }}</label>
                                    </div>                                                                      
                                  @endif
                                @endforeach
                                <div class="form-check p-4">
                                  <input class="form-check-input" type="checkbox" name="permission[]" value="{{ $permission->name }}" id="flexCheckDefault">
                                  <label class="form-check-label" for="flexCheckDefault">{{ $permission->name }}</label>
                                </div>
                              @endforeach                                                             
                            </div>

我不知道我做错了。我知道我有逻辑问题,但我无法解决它。

感谢自述文件,抱歉我的英语不好

您只需要从控制器传递 Role 以及关联的 Permissions 和所有 Perrmissions 进行比较。

public function edit($id)
{
    $role = Role::with('permissions')->find($id);
    $permissions = Permission::all();

    return view('opciones.roles.edit', ['role' => $role]);
}

在视图中

<h3>Permissions</h3>
<div class="row flex-row justify-content-center"> 
    @foreach($permissions as $permission)
        <div class="form-check p-4">
            <input type="checkbox"
                   id="flexCheckDefault"
                   class="form-check-input"
                   name="permission[]" 
                   value="{{ $permission->name }}" 
                   @checked((old($permission->name, $role->permissions->contains('name', $permission->name)) />
            <label class="form-check-label" for="flexCheckDefault">{{ $permission->name }}</label>
        </div>   
   @endforeach                                                             
</div>