【问题标题】:Datatables - Yajra returning an incorrect string - Laravel 5.8数据表 - Yajra 返回不正确的字符串 - Laravel 5.8
【发布时间】:2019-10-01 07:17:15
【问题描述】:

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

我编写了一个简单的刀片模板,其中数据表被 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;"

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

【问题讨论】:

    标签: laravel laravel-5 datatables laravel-5.8 yajra-datatable


    【解决方案1】:

    使用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);
    

    【讨论】:

    • 谢谢!现在好像没事了。
    猜你喜欢
    • 2020-04-23
    • 1970-01-01
    • 1970-01-01
    • 2019-02-15
    • 1970-01-01
    • 2021-07-29
    • 1970-01-01
    • 2021-08-10
    • 2014-12-12
    相关资源
    最近更新 更多