2017-03-18 16 views
1

は、私は私のパネルの管理者に役割を変え作るしようとしています。しかし、私はそれを私のフォームは投稿要求を送信しないようにした。現在、ユーザーの役割を示す作業のみ。私はそれを修正することはできませんので、私は何かエラーを取得していないと切り替えるボタンをクリックすると、役割は変更されません。Laravel 5.4の変更ユーザロール

私は、URL /管理/その、このエラーを示す変更使用するとき、私はHttpRequesterを使用します。RouteCollection.phpライン233

MethodNotAllowedHttpExceptionは私のコードがあります:

ビュー:

@extends('layouts.app') 
 
@section('content') 
 
<h2>Panel Admina</h2> 
 
<div class="panel-group"> 
 
\t <div class="panel panel-default"> 
 
\t <div class="panel-body"> 
 
\t \t <table class="table"> 
 
\t <thead> 
 
\t <tr> 
 
\t  <th>Id</th> 
 
     <th>Imię</th> 
 
     <th>Nazwisko </th> 
 
     <th>E-mail </th> 
 
     <th>Nr.tele </th> 
 
     <th>Użytkownik </th> 
 
     <th>Moderator </th> 
 
     <th>Admin </th> 
 
</tr> \t 
 
</thead> 
 
<tbody> 
 
@foreach($users as $user) 
 
    <tr> 
 
    <form action="{{route('change')}}" method="post"> 
 

 
       {{ csrf_field() }} 
 
     <td>{{ $user->id }}</td> 
 
     <td>{{ $user->name }}</td> 
 
     <td>{{ $user->lastname }}</td> 
 
     <td>{{ $user->email }}<input type="hidden" name="email" value="{{ $user->email }}"></td> 
 
     <td>{{ $user->phonenumber }}</td> 
 
     <td><input type="checkbox" {{ $user->hasRole('User') ? 'checked' : '' }} name="role_user"/></td> 
 
     <td><input type="checkbox" {{ $user->hasRole('Moderator') ? 'checked' : '' }} name="role_moderator"/></td> 
 
     <td><input type="checkbox" {{ $user->hasRole('Admin') ? 'checked' : '' }} name="role_admin"/></td> 
 
     <td><input type="submit" class="btn btn-default btn-sm" value="Przydziel rolę"></td> 
 

 

 
    </form> 
 
    </tr> 
 
@endforeach 
 
</tbody> 
 
</table> 
 
</div> 
 
</div> 
 
</div> 
 

 
@endsection

コントローラ:

public function change(Request $request) 
 
    { 
 
     $user = User::where('email', $request['email'])->first(); 
 

 
     $user->roles()->detach(); 
 

 
     if ($request['role_user']) { 
 
      $user->roles()->attach(Role::where('name', 'User')->first()); 
 
     } 
 
     if ($request['role_moderator']) { 
 
      $user->roles()->attach(Role::where('name', 'Moderator')->first()); 
 
     } 
 
     if ($request['role_admin']) { 
 
      $user->roles()->attach(Role::where('name', 'Admin')->first()); 
 
     } 
 
     return redirect()->back(); 
 
    }

ルーティング:

Route::get('/admin', [ 
 
     'uses' => '[email protected]', 
 
     'middleware' => 'roles', 
 
     'roles' => ['Admin'] 
 
    ]); 
 

 
Route::post('/admin/change', [ 
 
    'uses' => '[email protected]', 
 
    'as' => 'change', 
 
    'middleware' => 'roles', 
 
    'roles' => ['Admin'] 
 
]);

は、私は本当に私は私の問題を解決する方法を知りません。

+0

あなたのルートにある 'ミドルウェア'と 'ルール'が問題を引き起こすかどうかを調べてみてください –

+0

私はそうします/そして私はuniqe – Mariusz

+0

のthatsれます/ szpital /木/ paneladmina多分thatsのが、このプロジェクト – dparoli

答えて

0

それは例えば置く作るあなたのルートやフォームのアクションにユーザーIDを渡して、代わりにポストのようにしてください:

<form action="{{route('change', $user->id)}}" method="post"> 

とあなたのルートで:

Route::put('/admin/change/{id}', [ 
    'uses' => '[email protected]', 
    'as' => 'change', 
    'middleware' => 'roles', 
    'roles' => ['Admin'] 
]); 

とあなたのコントローラで:

public function change(Request $request, $id) 
+0

まだdoesntの仕事の前にポストルートを入れてみてくださいで、まだ同じ – Mariusz

+0

https://github.com/K3n0s隠されたメールとそのセットを使用becouse idはその、不可欠なないと思います。取得1つの – Mariusz

+0

と私のGitHubへのリンクは、あなたが「localhostと:8000/adminに/変更」を入力して、URLに移動しようとする場合があるほうが良いでしょう、それはあなたにエラーが発生します。これは、フォームを使用してhttp要求を介して発生する必要があります。私はあなたのコードで気づいた別の事はあなたのからデータを提出しませんが、私はテーブルhtmlコードを削除するとフォームが正しく送信されます。 –

関連する問題