我需要提交值从HTML形式,但每次我按下提交按钮的页面重新加载,到时候就是这样。我检查了线路和控制器,一切似乎没什么问题。
刀片
<div class="panel-body">
@if (session('status'))
<div class="alert alert-success">
{{ session('status') }}
</div>
@endif
@foreach($users as $users)
@if(session("admin")==0)
Meno: {{$users["name"]}} Email: {{$users["email"]}}
Registrovaný: {{$users["created_at"]}}
@endif
@if(session("admin")==1 AND $users["admin"]==0)
<form action="/promote" method="POST">
Meno: {{$users["name"]}} Email: {{$users["email"]}}
Registrovaný: {{$users["created_at"]}}
<input type="hidden" name="id" value="{{$users["id"]}}">
<button type="submit" class="w3-button w3-green">Promote</button>
</form>@endif
@if(session("admin")==1 AND $users["admin"]==1)
<form action="/demote" method="POST">
Meno: {{$users["name"]}} Email: {{$users["email"]}}
Registrovaný: {{$users["created_at"]}}
<input type="hidden" name="id" value="{{$users["id"]}}">
<button type="submit" class="w3-button w3-red">Demote</button>
</form>@endif
<br>
@endforeach
</div>
路线
Route::post('/promote', 'users_controller@promote')->middleware('auth');
Route::post('/demote', 'users_controller@demote')->middleware('auth');
控制器
public function promote(Request $req)
{
$id = $req->input('id');
DB::table('users')->where("id", $id)->update(["admin" => 1]);
return redirect()->back();
}
public function demote(Request $req)
{
$id = $req->input('id');
DB::table('users')->where("id", $id)->update(["admin" => 0]);
return redirect()->back();
}
我想用隐藏输入中发布的ID更改行“ admin”上的数据库值。现在,除了重新加载页面外,它什么也没做。
答案 0 :(得分:2)
您缺少CSRF令牌,要解决此问题,您应该将@csrf
放在表单标签中,例如:
<form action="/demote" method="POST">
@csrf
Meno: {{$users["name"]}} Email: {{$users["email"]}}
Registrovaný: {{$users["created_at"]}}
<input type="hidden" name="id" value="{{$users["id"]}}">
<button type="submit" class="w3-button w3-red">Demote</button>
</form>
有关更多信息,请检查docs
答案 1 :(得分:0)
要提交表单,你很可能会需要使用<input type="submit" value="Submit">
,而不是关闭<button type="submit" class="w3-button w3-red">Demote</button>
在使用纯HTML和PHP之前,这对我造成了问题,请尝试一下。