Laravel 上的小型管理控制面板代码

Small admin control panel code on Laravel

我正在尝试为管理员开发一个小的控制面板来将角色分配给其他用户,问题是我的代码没有显示任何错误但同时它不会影响其他人的任何角色用户。它保持不变, 我的控制面板基于自动提交方法,然后我检查特定用户的角色。

我查看包含控制面板的管理代码是;

      <div class="row offset-2">

           <div class="col-md-4 course_box">


   <h4>Panel de Controle </h4><br>
   <h6> <b>Liste des utilisateurs :</b></h6>
    <br><br>
   <div>
    <table class="table table-hover">
        <tr>
            <th>#</th>
            <th>Nom</th>
            <th>Email</th>
            <th>Elève</th>
            <th>Enseignant</th>   
            <th>Parent</th>   
            <th>Administrateur</th>
            </tr>
            @foreach($users as $user)
             <form method="post" action="/add-role">

           {{ csrf_field() }}


           <input type="hidden" name="email" value="{{ $user->email }}">
            <tr>
                  <th>{{ $user->id }}</th>
                  <td>{{ $user->name }}</td>
                   <td>{{ $user->email }}</td>
                    <td>
                        <input type= "checkbox" name='role_elève' onChange="this.form.submit()" {{ $user->hasRole('Elève') ? 'checked' : ' ' }}>  </td>
                     <td> <input type= "checkbox" name='role_ens' onChange="this.form.submit()" {{ $user->hasRole('Enseignant') ? 'checked' : ' ' }}></td>
                      <td> <input type= "checkbox" name='role_parent'  onChange="this.form.submit()" {{ $user->hasRole('Parent') ? 'checked' : ' ' }}></td>
                       <td> <input type= "checkbox" name='role_admin'  onChange="this.form.submit()" {{ $user->hasRole('Admin') ? 'checked' : ' ' }}></td>
                   </tr>
               </form>
                   @endforeach
                   </table>
                   </div>

          </div></div>

web.php 包含以下路由添加角色:

  Route::post('add-role', [ 
  'uses' => 'PostsController@addRole',
   'as' => 'admin',
    'middleware' => 'roles',
      'roles' => ['Admin']
   ]);

PostsController 中的 addRole 方法实现了以下代码:

   Public function addRole(Request $request) {

        $user = User::where('email', $request['email'])->first();
        $user->roles()->detach();

      if($request['role_elève'])
      {
         $user->roles()->attach(Role::where('name', 'Elève')->first());

      }

       if($request['role_ens'])
      {
         $user->roles()->attach(Role::where('name', 'Enseignant')->first());

      }

       if($request['role_parent'])
      {
         $user->roles()->attach(Role::where('name', 'Parent')->first());

      }

    if($request['role_admin'])
      {
         $user->roles()->attach(Role::where('name', 'Admin')->first());

      }

      return redirect()->back();
    }

当 laravel 没有检测到错误的详细信息时,我找不到错误,非常感谢任何帮助

你的$request是对象,不是数组...

因此,要使其正常工作,请在 PostController 中将所有 $request[ 声明更改为 $request->,如本例所示:

public function addRole(Request $request) {

$user = User::where('email', $request->email)->first();
$user->roles()->detach();

if($request->role_elève) {
    $user->roles()->attach(Role::where('name', 'Elève')->first());
}

if($request->role_ens) {
   $user->roles()->attach(Role::where('name', 'Enseignant')->first());
}

if($request->role_parent) {
   $user->roles()->attach(Role::where('name', 'Parent')->first());
}

if($request->role_admin) {
   $user->roles()->attach(Role::where('name', 'Admin')->first());
}

return redirect()->back();
}

注:

我还建议将 role_elève 的变量名称更改为 role_eleve。如果是这样,请记住相应地修改视图中的字段...