发送数据时重复刀片中的数据

发布于 2025-02-02 19:24:55 字数 2343 浏览 2 评论 0原文

我正在尝试在编辑刀片中显示我的所有角色,并使用复选框显示,这检查是否已符合此角色的许可。

我的问题是将数据权限和权限发送到此角色时,所有权限名称都重复了。

为了设置角色和权限,我

在控制器中使用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"] ]);
    }

在我的刀片中,我有一个:

<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>

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

感谢您的读书,对不起,我的英语不好

i´m trying to show all my roles in my edit blade and with checkbox, that this checks it´s checked if this role have this permission.

my problem it´s when send data permissions and permissions to this role, all permission name it´s duplicate.

enter image description here

for set roles and permission i´m using laravel-permission/spatie

in my controller i have this:

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"] ]);
    }

and in my blade i have this:

<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>

i don´t know that i´m doing wrong. I know that i have a logic problem, but i can´t solve it.

Thanks for readme and sorry for my bad english

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

九局 2025-02-09 19:24:55

您只需要使用关联的权限和所有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>

You just need to pass the Role with associated Permissions and all Perrmissions to compare against, from the controller.

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

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

In the view

<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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文