bugfix> php > 投稿

私は管理者が他のユーザーにロールを配布するための小さなコントロールパネルを開発しようとしています。問題は、私のコードにはエラーが表示されないが、同時に他のユーザーのロールには影響しないことです。それはまったく同じ方法であり、 私のコントロールパネルは、特定のユーザーの役割を自動的に確認する送信方法に基づいています。

コントロールパネルを含む私のビュー管理コードは;

     <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がその詳細を検出しないとエラーが見つかりません。どんな助けでも大歓迎です

回答 1 件
  • あなたの $request  配列ではなくオブジェクトです...

    したがって、機能させるには、すべての $request[ を変更します   $request-> への宣言  この例のように、PostControllerで:

    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 へ 。その場合、それに応じてビューのフィールドを変更することを忘れないでください...

あなたの答え