在过帐表单上按提交按钮仅重新加载页面

时间:2019-02-01 23:44:13

标签: php html laravel

我需要提交值从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”上的数据库值。现在,除了重新加载页面外,它什么也没做。

2 个答案:

答案 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之前,这对我造成了问题,请尝试一下。