我正在尝试为管理员开发一个小型控制面板,以便将角色分配给其他用户,问题是我的代码没有向我显示任何错误但同时它并没有影响任何角色给其他用户。它保持不变, 我的控制面板基于提交方法自动检查特定用户的角色。
我的视图管理代码包含控制面板;
<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包含以下路由add-role:
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没有检测到它的细节时,我无法找到错误,任何帮助都会受到赞赏
答案 0 :(得分:0)
你的$request
是对象,而不是数组......
因此,要使其工作,请将所有$request[
声明更改为PostController中的$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
。如果是这样,请记住相应地修改视图中的字段...