我想使用 laravel 在选择选项中显示与用户相关的角色

问题描述 投票:0回答:3

我正在尝试显示与

roles
相关的
user
但不幸的是
userRoles
在选择选项中没有显示与用户相关,请帮助我如何匹配它谢谢。

注意:-我正在使用

spaite laravel permission
文档

控制器

public function edit(User $user)
    {

        $data = [

            'isEdit' => true,
            'user' => $user,
            'roles' => Role::where('guard_name', '=', 'web')->select(['id', 'name'])->get(),

            'userRole' => $user->getRoleNames(),                 
              // i am getting userRole in array related to user
             //  ['employe']

        ];
        // return $data['userRole'];
        return view('cms.user_management.add-user', $data);
    }

html 视图

                     <div class="col-md-6">
                            <div class="form-group">
                              <label>Role <span class="text-danger">*</span></label>
                                <select class="form-control" name="roles[]">
                                    <option selected="selected" disabled >please 
                                   select</option>
                                    @foreach ($roles as $item)
                                   <option value="{{ $item->name }}"{{ $userRole == 
                                $item->name ? ' selected' : '' }}>{{ $item->name }}</option>
                                    @endforeach
                                </select>
                            </div>
                            <span class="text-danger">{{ $errors->first('roles') ?? null }} 
                           </span>
                          </div>
php laravel user-permissions laravel-permission
3个回答
2
投票

尝试在您的 HTML 中进行以下更改 如果

$userRole
是数组,则使用
in_array
.

检查 $item->name 是否存在于数组中
 'userRole' => $user->getRoleNames()->toArray(),

html 视图

{{ in_array($item->name, $userRole) ? 'selected' : '' }}


<div class="col-md-6">
     <div class="form-group">
          <label>Role<span class="text-danger">*</span></label>
              <select class="form-control" name="roles[]">
                  <option selected="selected" disabled>please select</option>
                       @foreach ($roles as $item)
                             <option value="{{ $item->name }}"{{ in_array($item->name,$userRole) ? 'selected' : '' }}>{{ $item->name }}</option>
                       @endforeach
               </select>
       </div>
   <span class="text-danger">{{ $errors->first('roles') ?? null }}</span>
</div>

0
投票

您可以使用它来获取与当前用户关联的角色或

Auth::user()->roles->pluck('name');

对于任何特定的用户角色。

User::find($id)->roles->pluck('name') 

0
投票

像这样使用:-

$user->getRoleNames()->first(),
© www.soinside.com 2019 - 2024. All rights reserved.