我有一个页面,其中包含有关对象列表的不同信息,每行都有一个按钮来确认当前行中的对象。
如果我尝试提交"确认"按钮,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中不起作用
提前致谢!
答案 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>