我有简单的添加,编辑和删除方法,但随机我收到此错误:
VerifyCsrfToken.php第68行中的TokenMismatchException
有时没有任何错误我可以添加,编辑或删除,有时我收到错误,我不知道为什么。我收到此错误,因为我在表单中使用csrf_field
。
{{csrf_field()}}
这是我的代码。 路线:
Route::resource('info','InfoController');
索引视图:
@if(Auth::check())
<div class="info-btn">
<a href="info">Add</a>
@if($info)
<a href="{{action('InfoController@edit',$info->id)}}">Edit </a>
{!! Form::open(['action' =>
['InfoController@destroy',$info->id] , 'method' => 'DELETE']) !!}
{{Form::token()}}
{{form::submit('delete')}}
{{Form::close()}}
@endif
</div>
@endif
添加视图:
<form action="{{action('InfoController@store')}}" method="post">
{{csrf_field()}}
<div class="form-group">
<label for="name">Name</label>
<input type="text" name="name" class="form-control" id="name"}">
</div>
<label for="name">Slogan</label>
<input type="text" name="add-slogan" class="form-control" id="slogan">
</div>
<div class="form-group">
<label for="email">E-Mail:</label>
<input type="mail" name="email" class="form-control" id="email">
</div>
<div class="form-group">
<label for="phone">Phone :</label>
<input type="text" name="phone" class="form-control" id="phone">
</div>
<button type="submit">Send Info</button>
</form>
编辑视图就像上面的表格一样,只有不同的行动
<form action="{{action('adminInfoController@update',$edit_info->id)}}" method="post">
{{csrf_field()}}
{{method_field('PUT')}}
InfoController:
public function index()
{
$info=Info::all()->first();
return view('info-add',compact('info'));
}
public function store(Request $request)
{
$name = $request->input('add-name');
$slogan = $request->input('add-slogan');
$email = $request->input('add-email');
$phone = $request->input('add-phone');
DB::table('data')->insert([
'name' => $name,
'email' => $email,
'address' => $address,
'phone' => $phone,
]);
return redirect('/');
}
public function edit($id)
{
$edit_info=DB::table('data')->where('id',$id)->first();
return view('info-edit',compact("edit_info"));
}
public function update(Request $request, $id)
{
DB::table('data')->where('id',$id)->update([
'name' => $request->input('name'),
'phone' =>$request->input('phone'),
'email' =>$request->input('email'),
]);
return redirect('/');
}
public function destroy($id)
{
DB::table('data')->where('id',$id)->delete();
return Redirect('/');
}
答案 0 :(得分:0)
如果你确定传递了_token,你应该检查你正在使用什么类型的Session。默认情况下,laravel使用文件会话。我使用繁重的ajax应用程序遇到了这个问题,将会话驱动程序更改为数据库解决了我的问题。
在这里阅读更多相关信息: https://laravel.com/docs/5.4/session#configuration
答案 1 :(得分:0)
如果时不时发生,这可能是由于会话超时。如果您尝试刷新页面,可以检查它。 Check this laracast讨论。