【问题标题】:how to retrieve array of old selected checkbox to edit blade in laravel?如何检索旧选定复选框的数组以在 laravel 中编辑刀片?
【发布时间】:2021-07-07 07:47:27
【问题描述】:

我遇到了一个错误,我想获取选中复选框的数组,这些复选框像这样保存在数据库中 -

,对此的看法是:

现在的事情是,我使用 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>

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

edit : 这是 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}} />

【问题讨论】:

    标签: php laravel forms controller


    【解决方案1】:

    您可以执行以下操作

     <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();
        
    

    【讨论】:

    • 感谢兄弟,但编辑选项仍然为空
    • 是你要填充到复选框的 role_data 吗?
    • sorry noob here,认为从权限获取可以解决错误,但是你是对的兄弟,我必须从 role_data 获取,如果我也分享我的存储方法,你可以了解它
    • 如果你想填充到 $role_data,你能显示 dd($role_data->toArray()) 数据吗
    • 我已经更新了问题,请看一下
    猜你喜欢
    • 1970-01-01
    • 2015-01-14
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-12
    • 1970-01-01
    相关资源
    最近更新 更多