我遇到了这个问题TokenMismatchException 在VerifyCsrfToken.php中(第68行)。
在我的master.blade.php的头部,我有
<meta name="csrf-token" content="{{ csrf_token() }}">
和这一个
$(document).ready(function(){
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
});
在页脚中。
这里我的代码片段shift.blade.php
<div class="modal fade" id="shift-show" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title">Nouveau shift</h4>
</div>
<form action="{{ route('createShift') }}" method="POST" id="frm-shift-create" >
<div class="modal-body">
<div class="row">
<div class="col-sm-12">
<input type="text" name="shift" id="shift" class="form-control" placeholder="Shift">
</div>
</div>
</div>
<div class="modal-footer">
<button data-dismiss="modal" class="btn btn-default" type="button">Fermer</button>
<button class="btn btn-success" type="submit">Enregistrer</button>
</div>
</form>
</div>
</div>
这是我的路线
Route::post('gerer/cours/shift',['as'=>'createShift','uses'=>'CoursController@createShift']);
在我的表单中添加{{csrf_token()}}时,它会返回一个空白的空白页,但我的生意中没有错误
我是laravel的菜鸟,我在这里看到了很多这样的问题,但没有解决我的问题。我能得到帮助吗?
答案 0 :(得分:0)
我在您的帖子下面阅读了评论,Vandolph Reyes已经明确解决了您的问题,但让我们再解释一下。
TokenMismatchException
例外表示您的表单错过了CSRF token protection
。
您在CSRF token
中添加了<head>
并将其添加到 AJAX HTTP请求标头中,但是对于您当前的表单,您显然不会使用“<强> AJAX 请求“,因此您的javascript代码段无用。
为了在表单中添加CSRF token
,有两种解决方案:
{{ csrf_field() }}
添加到表单中。它将使用令牌添加隐藏字段,并将纠正问题。<input type="hidden" name="_token" value="{{ csrf_token() }}" />
。这是第一个解决方案生成的字段。有了这个,您现在可以借助CoursController@createShift
或$request
在目标控制器操作(request()
)中访问您的输入。例如,如果您要查找“转移”输入值,则会在$request->input('shift')
(或$request->shift
)中找到它。
现在,您可以将您的值存储在数据库中,或者在其他视图/操作/控制器中使用它......