Datatable: addColumn отправляет только текст
Я делаю обработку на стороне сервера и добавляю столбцы с некоторыми стилями CSS, но по какой-то причине он не интерпретируется в html, он получает его только как текст.
Это мой PHP-код.
public function getCompras()
{
$compra = Compra::with('empresas');
return DataTables::of($compra)
->addColumn('empresas', function ($compra) {
return $compra->empresas->first()->nombre;
})
->addColumn('estado', function ($compra) {
if ($compra->estado == 0) {
return '<span class="label label-warning" >Pendiente</span>';
} else {
return '<span class="label label-success">Cobrado</span>';
}
})
->make(true);
}
Мой JS
$(document).ready(function () {
$('#tb_por_pagar').DataTable({
processing: true,
serverSide: true,
ajax: '/cuentas/pagar/data',
columns: [
{data: 'factura_numero', name: 'factura_numero'},
{data: 'total_transferencia', name: 'total_transferencia'},
{data: 'fecha_pago', name: 'fecha_pago'},
{data: 'empresas', name: 'empresas'},
{data: 'estado', name: 'estado'},
],
'language': {
'url': '../plugins/dataTables.spanish.lang'
}
})
})
и это результат
Спасибо за помощь!
1 ответ
Решением является добавление ->rawColumns() в конец нашего метода
public function getCompras()
{
$compra = Compra::with('empresas');
return DataTables::of($compra)
->addColumn('empresas', function ($compra) {
return $compra->empresas->first()->nombre;
})
->addColumn('estado', function ($compra) {
return "<span class='label label-warning' >Pendiente</span>";
})
->rawColumns(['estado'])
->make(true);
}
Решение добавлено к $dt->escapeColumns([])->make( true )
до конца строки. Вот мой код проекта:
$data = DB::table( 'products' )->get();
$dt = DataTables::of( $data );
$dt->addColumn( 'action', function ( $data ) {
$button = '<a class="pointer edit" data-id="' . $data->id . '" title="Edit(' . $data->id . ')"><i class="fa fa-edit"></i></a>';
$button .= ' ';
$button .= '<a class="pointer delete" data-id="' . $data->id . '" title="Delete(' . $data->id . ')"><i class="fa fa-trash"></i></a>';
return $button;
} );
return $dt->escapeColumns([])->make( true );