数据表 - Yajra 返回不正确的字符串 - Laravel 5.8

Datatables - Yajra returning an incorrect string - Laravel 5.8

我正在构建一个列出英国酒吧的相当简单的页面。其中有超过 200,000 个。

我编写了一个简单的 blade 模板,其中 ajax 将数据表调用到控制器 DatatablesController 中的路由。一切正常,但我想添加编辑和查看按钮,所以这是我的控制器功能:

  public function getPubs(Request $request)
      {
        $model = Pub::query();
        return DataTables::eloquent($model)
                 ->addColumn('action', function($row){
                           $btn = '<a href="javascript:void(0)" class="edit btn btn-primary btn-sm">View</a>';
                            return $btn;
                    })
                ->addColumn('edit', function($row){
                          $editbtn = '<a href="javascript:void(0)" class="edit btn btn-primary btn-sm">edit</a>';
                           return $editbtn;
                   })
                ->make(true);
      }

问题是编辑列返回的字符串不正确。这是第一项的 ajax 结果的结尾:

    "action": "<a href=\"javascript:void(0)\" class=\"edit btn btn-primary btn-sm\">View</a>",
    "edit": "&lt;a href=&quot;javascript:void(0)&quot; class=&quot;edit btn btn-primary btn-sm&quot;&gt;edit&lt;/a&gt;"

我在我的方法中看不出任何没有正确返回的原因。

使用 rawColumns() API 方法防止 Laravel DataTables 编码 HTML 个实体。

例如:

return DataTables::eloquent($model)
   ->addColumn('action', function($row){
      $btn = '<a href="javascript:void(0)" class="edit btn btn-primary btn-sm">View</a>';
      return $btn;
   })
   ->addColumn('edit', function($row){
      $editbtn = '<a href="javascript:void(0)" class="edit btn btn-primary btn-sm">edit</a>';
      return $editbtn;
   })
   ->rawColumns(['action', 'edit'])
   ->make(true);