首页 > 解决方案 > 如何检索旧选定复选框的数组以在 laravel 中编辑刀片?

问题描述

我面临一个错误,我想获取选定复选框的数组,它们像这样保存在数据库中 -在此处输入图像描述

,这个观点是这样的:在此处输入图像描述

现在的问题是,我使用 role_id 作为 id 来访问它,这意味着当用户单击与 id = 1 关联的编辑按钮时,意味着管理员,应该在编辑页面上获取使用 role_id 1 设置的权限。编辑页面的ui是这样的: 在此处输入图像描述

,现在如何将所有选中的复选框检索回编辑选项并表示所有权限,无论是发布、评论、用户等。如何在刀片上显示它们?

这是编辑的控制器:

  public function edit($role_id,Request $request)
    {
       
        $role_data = RolePermission::where(['role_id' => $role_id])->get();
      
        
        return view('AssignPermission.edit',compact('role_data'));
    }

这是刀片文件的视图?

    <td class="examplelink">
                              <input type="checkbox" name="Permissions[]" value="PostAdd"  @if (is_array(old('Permissions')) && in_array('PostAdd', old('Permissions'))) {{"checked='checked'"}}@endif>
                    </td>

如何将所有数据检索到编辑表单???

编辑:这是 dd($role_data->toArray()) 的结果 在此处输入图像描述

我将值存储为静态的,如下所示:

        public function store(Request $request)
{
    $data = $request->all();
    $rules = array(
       'Roles' => 'required',
    );

    $validate=Validator::make($data,$rules);
    if ($validate->fails()) {
        return redirect()->back()->withInput()->withErrors($validate);
    }
    else{
       
         $data = $request->all();
        //  dd($data);   

        // Post CheckBox

        if(in_array('PostAdd', $request->get('Permissions'))){
            $PostAdd = new RolePermission;
            $PostAdd->role_id = $request->Roles;
            $PostAdd->Item = 'Post';
            $PostAdd->Permission = 'Add';
            $PostAdd->save();
        }
        if(in_array('PostView', $request->get('Permissions'))){
            $PostView = new RolePermission;
            $PostView->role_id = $request->Roles;
            $PostView->Item = 'Post';
            $PostView->Permission = 'View';
            $PostView->save();
        }
        
        if(in_array('PostEdit', $request->get('Permissions'))){
            $PostEdit = new RolePermission;
            $PostEdit->role_id = $request->Roles;
            $PostEdit->Item = 'Post';
            $PostEdit->Permission = 'Edit';
            $PostEdit->save();
        }

        if(in_array('PostDelete', $request->get('Permissions'))){
            $PostDelete = new RolePermission;
            $PostDelete->role_id = $request->Roles;
            $PostDelete->Item = 'Post';
            $PostDelete->Permission = 'Delete';
            $PostDelete->save();
        }

        // Comment checkBox
        if(in_array('CommentAdd', $request->get('Permissions'))){
            $CommentAdd = new RolePermission;
            $CommentAdd->role_id = $request->Roles;
            $CommentAdd->Item = 'Comment';
            $CommentAdd->Permission = 'Add';
            $CommentAdd->save();
        }
        if(in_array('CommentView', $request->get('Permissions'))){
            $CommentView = new RolePermission;
            $CommentView->role_id = $request->Roles;
            $CommentView->Item = 'Comment';
            $CommentView->Permission = 'View';
            $CommentView->save();
        }
        if(in_array('CommentEdit', $request->get('Permissions'))){
            $CommentEdit = new RolePermission;
            $CommentEdit->role_id = $request->Roles;
            $CommentEdit->Item = 'Commment';
            $CommentEdit->Permission = 'Edit';
            $CommentEdit->save();
        }
        if(in_array('CommentDelete', $request->get('Permissions'))){
            $CommentDelete = new RolePermission;
            $CommentDelete->role_id = $request->Roles;
            $CommentDelete->Item = 'Comment';
            $CommentDelete->Permission = 'Delete';
            $CommentDelete->save();
        }


        // User CheckBox
        if(in_array('UserAdd', $request->get('Permissions'))){
            $UserAdd = new RolePermission;
            $UserAdd->role_id = $request->Roles;
            $UserAdd->Item = 'User';
            $UserAdd->Permission = 'Add';
            $UserAdd->save();
        }
        if(in_array('UserView', $request->get('Permissions'))){
            $UserView = new RolePermission;
            $UserView->role_id = $request->Roles;
            $UserView->Item = 'User';
            $UserView->Permission = 'View';
            $UserView->save();
        }
        if(in_array('UserEdit', $request->get('Permissions'))){
            $UserEdit = new RolePermission;
            $UserEdit->role_id = $request->Roles;
            $UserEdit->Item = 'User';
            $UserEdit->Permission = 'Edit';
            $UserEdit->save();
        }
        if(in_array('UserDelete', $request->get('Permissions'))){
            $UserDelete = new RolePermission;
            $UserDelete->role_id = $request->Roles;
            $UserDelete->Item = 'User';
            $UserDelete->Permission = 'Delete';
            $UserDelete->save();
        }
            
            $Message = "successfully added";
            return redirect('/Admin/AssignPermission')->with('success',$Message);
        }   
    }

让我知道??这种方法对不对??建议其他方法来存储和检索数据???

更新的代码:这是编辑的功能:

    public function edit($role_id,Request $request)
    {
       
        $role_data = RolePermission::where(['role_id' => $role_id])->get()->map(function ($role){

            return $role->Item.$role->Permission;
        });;
        
        return view('AssignPermission.edit',compact('role_data'));
    }

这是刀片的更新代码:

                            <input type="checkbox" name="Permissions[]" value="PostAdd" {{is_array(old('Permissions',$role_data??[])) && in_array('PostAdd',old('Permissions',$role_data??[]))?'checked':null}} />

标签: phplaravelformscontroller

解决方案


您可以执行以下操作

 <input type="checkbox" name="Permissions[]" value="PostAdd" {{is_array(old('Permissions',$role_data??[]))&&in_array('PostAdd',old('Permissions',$role_data??[]))?'checked':null}} />

在控制器中

   $role_data = RolePermission::where(['role_id' => $role_id])->get()->map(function ($role){

        return $role->Item.$role->Permission;
    })->toArray();
    

推荐阅读