Laravel Datatables添加具有特定html

时间:2017-06-07 22:51:27

标签: laravel datatables

我将问题添加到jquery.datatables中。

我的数据表功能如下所示

 public function getSliderImages()
{

    $query = Slider::with('User')->select('sliders.*');

    return Datatables::of($query)
        ->addColumn('fullName',function ($data){
            return $data->user->firstName .' '. $data->user->lastName;
        })
        ->addColumn('types',function ($data){
            return '<ul class="list-condensed list-unstyled no-margin">' .
                '<li><span class="text-semibold">Boyut:</span> '.$data->size.'</li>' .
                '<li><span class="text-semibold">Format:</span> ' .$data->ext.'</li></ul>';
        })

        ->make(true);
}

返回的json文件非常好,但问题就在这里 我的数据表看起来像it acts as a raw text not as a html

最后一件事是我的javascript

columns: [
                {data: 'slider_slug', name: 'slider_slug',"render": function(data, type, row) {
                    return '<a href="'+loc+'/'+data+'" data-popup="lightbox"> <img src="'+loc+'/'+data+'" class="img-rounded img-preview" </a>';
                },

                    orderable: false,
                    searchable: false
                },
                {data: 'slider_slug', name: 'slider_slug'},
                {data: 'fullName', name: 'fullName'},
                {data: 'created_at', name: 'created_at'},
                {data: 'action',name:'action'},
                {data: 'types',name:'types'},

返回值的作用类似于纯文本,但是它的html。

在javascript中,我无法从服务器获取2个数据。我的意思是我不能在1行中获得2个变量。

我该如何解决这个问题

3 个答案:

答案 0 :(得分:1)

我认为我有解决问题的方法,试试这个

 columns: [
              {data: 'slider_slug', name: 'slider_slug',
                            render:function (data, type, full, meta) {
                                console.log(full);
                                return '<a href="'+loc+'/'+data+'" data-popup="lightbox"> <img src="'+loc+'/'+data+'" class="img-rounded img-preview" </a>';
                            }
                    }

答案 1 :(得分:1)

简单... 只需添加->rawColumns(['fullName', 'types'])

所以...您的代码将是:

public function getSliderImages()
{

    $query = Slider::with('User')->select('sliders.*');

    return Datatables::of($query)
        ->addColumn('fullName',function ($data){
            return $data->user->firstName .' '. $data->user->lastName;
        })
        ->addColumn('types',function ($data){
            return '<ul class="list-condensed list-unstyled no-margin">' .
                '<li><span class="text-semibold">Boyut:</span> '.$data->size.'</li>' .
                '<li><span class="text-semibold">Format:</span> ' .$data->ext.'</li></ul>';
        })
        ->rawColumns(['fullName', 'types'])
        ->make(true);
}

请参见https://yajrabox.com/docs/laravel-datatables/master/raw-columns

答案 2 :(得分:0)

请使用新的rawColumns()方法。您必须传递一个或多个需要显示为原始列(呈现HTML)的数组或列

示例: (驱动程序和操作列将呈现为原始格式-使用HTML)

rawColumns(['driver','action'])