[英]Laravel 5.4 change user role
我嘗試在我的面板管理員中更改角色。 但是,當我把它作為我的形式不發送郵件請求。 現在只顯示用戶角色。 我不能解決它因為當我點擊按鈕切換我沒有得到任何錯誤和角色沒有改變。
當我使用url / admin /更改它顯示此錯誤時我使用HttpRequester: RouteCollection.php第233行中的MethodNotAllowedHttpException
有我的代碼:
視圖:
@extends('layouts.app') @section('content') <h2>Panel Admina</h2> <div class="panel-group"> <div class="panel panel-default"> <div class="panel-body"> <table class="table"> <thead> <tr> <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> </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' => 'AdminController@index', 'middleware' => 'roles', 'roles' => ['Admin'] ]); Route::post('/admin/change', [ 'uses' => 'AdminController@change', 'as' => 'change', 'middleware' => 'roles', 'roles' => ['Admin'] ]);
我真的不知道如何解決我的問題。
嘗試將用戶ID傳遞給您的路線和表單操作,而不是將其作為例如:
<form action="{{route('change', $user->id)}}" method="post">
在你的路線:
Route::put('/admin/change/{id}', [
'uses' => 'AdminController@change',
'as' => 'change',
'middleware' => 'roles',
'roles' => ['Admin']
]);
並在您的控制器中:
public function change(Request $request, $id)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.