我在laravel中有此代码,并使用YAJRA数据表,不能使用csrf令牌。这是我的代码:
return DataTables::of($destroyList)
->addColumn('action', function ($destroyList){
return '<form id="delete-data">
{{ csrf_field() }}
<a href="#" data-id="'. $destroyList->id .'" title="Restore?" class="restore"> <i class="fa fa-rotate-left"></i></a>
|
<a href="#" data-id="'. $destroyList->id .'" title="Parmanent Delete?" class="ptrash"> <i class="fa fa-trash"></i> </a>
</form>';
})
->toJson();
答案 0 :(得分:1)
由于这是一个PHP函数,因此无法使用blade
语法,但也不必这样做。只需删除{{ csrf_field() }}
并用等效的PHP代替:
return '<form id="delete-data">'.csrf_field().'<a href="#" data-id="'. $destroyList->id .'" title="Restore?" class="restore"> <i class="fa fa-rotate-left"></i></a> | <a href="#" data-id="'. $destroyList->id .'" title="Parmanent Delete?" class="ptrash"> <i class="fa fa-trash"></i></a></form>';
csrf_field()
作为全局函数,返回隐藏输入字段所需的HTML,因此将在此字符串中使用它
<input type="hidden" name="_token" value="...">
放入您的字符串。
答案 1 :(得分:1)
如果您需要在dataTable列中添加复杂的视图,则可以为此使用自定义刀片视图。
->addColumn('action', function ($destroyList){
return view('destroyList.action'['destroyList' =>$destroyList]);
});
然后在action.blade.php
文件夹中使用所需的html创建文件resources/views/destroyList
:
<form id="delete-data">
{{ csrf_field() }}
<a href="#" data-id="{{ $destroyList->id }}" title="Restore?" class="restore"> <i class="fa fa-rotate-left"></i></a>
|
<a href="#" data-id="{{ $destroyList->id }}" title="Parmanent Delete?" class="ptrash"> <i class="fa fa-trash"></i> </a>
</form>
答案 2 :(得分:0)
如果您的laravel版本高于5.5,则无法正常工作。 https://laravel.com/docs/5.5/csrf
@csrf
{{csrf_field()}}
和laravel 5.6版和++版 https://laravel.com/docs/5.6/csrf
@csrf
CSRF令牌以及在表单标签之间使用