如何在Laravel Yajra datable和'。{{csrf_token()}}。中使用csrf令牌。不工作

时间:2019-03-27 16:35:09

标签: php laravel

我在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>
                          &nbsp;|&nbsp; 
                          <a href="#" data-id="'. $destroyList->id .'" title="Parmanent Delete?" class="ptrash"> <i class="fa fa-trash"></i> </a>
                          </form>';
            })
            ->toJson();

3 个答案:

答案 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>&nbsp;|&nbsp;<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>
    &nbsp;|&nbsp; 
    <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令牌以及在表单标签之间使用