Laravel 5.6帖子表格不起作用

时间:2018-04-09 13:52:52

标签: php laravel laravel-5.6

我有一个页面,其中包含有关对象列表的不同信息,每行都有一个按钮来确认当前行中的对象。

如果我尝试提交"确认"按钮,Laravel显示包含以下单词的页面:"由于不活动,页面已过期。请刷新并重试。"

索引视图页面:

<form action="{{url('confirm')}}" method="POST" enctype="multipart/form-data">
  <input type="hidden" value="idproof"  id="id"  name="id" >
  <input type="hidden" value="nameproof"  id="name"  name="name" >
  <input type="submit" class="btn" value="Confirm"/>
</form>

web.php

Route::get('confirm','Controller@showList');
Route::post('confirm', 'Controller@confirmObject');

控制器方法:

public function showList()
{
  $ob=Object::all();
  return view('object.index',compact('poiValidation',$ob));
}


public function confirm(ObjectRequest $request,Object $poiToSave)
{
   // just a proof
   return  $request;
}

请求由Laravel命令自动生成。

如果我把路线放在api.php中,它就可以了。我无法弄清楚为什么它在web.php中不起作用

提前致谢!

2 个答案:

答案 0 :(得分:1)

您需要在表单帖子中发送跨站点请求伪造(CSRF)令牌。在laravel 5.6中快速执行此操作的是刀片指令&#34; @ csrf&#34;。

<form action="{{url('confirm')}}" method="POST" enctype="multipart/form-data">
@csrf
<input type="hidden" value="idproof"  id="id"  name="id" >
<input type="hidden" value="nameproof"  id="name"  name="name" >
<input type="submit" class="btn" value="Confirm"/>
</form>

您可以在此处了解有关laravel和CSRF令牌的更多信息: https://laravel.com/docs/5.6/csrf

答案 1 :(得分:0)

试试这个

<form action="{{url('confirm')}}" method="POST" enctype="multipart/form-data">
 {{ csrf_field() }}
            <input type="hidden" value="idproof"  id="id"  name="id" >
            <input type="hidden" value="nameproof"  id="name"  name="name" >
            <input type="submit" class="btn" value="Confirm"/>
                 </form>