Estoy usando Laravel Datatables 7, pero mi tabla no muestra el código HTML. Estaba renderizando HTML antes, pero cuando actualicé a las nuevas Laravel DataTables a 7 de 6, dejó de renderizar HTML en la columna. http://prntscr.com/e11n84
Esto es con Laravel DataTables 6 - http://prntscr.com/e11ph0
Los resultados se escapan de forma predeterminada en v7. Todavía no he documentado todos los cambios importantes, pero el registro de cambios debería proporcionar algunas pistas. ¡Gracias!
¿Cómo puedo solucionar el mismo problema pero en el Servicio?
@brian2694 usa el nuevo método ->rawColumns(['column_with_html'])
.
Tengo un problema similar, ¿algún ejemplo para usar rawColumns?
return Datatables::of($this->users->getForDataTable($request->get('status'), $request->get('trashed')))
->editColumn('confirmed', function ($user) {
return $user->confirmed_label;
})
->addColumn('roles', function ($user) {
return $user->roles->count() ?
implode('<br/>', $user->roles->pluck('name')->toArray()) :
trans('labels.general.none');
})
->addColumn('actions', function ($user) {
return $user->action_buttons;
})
->rawColumns(['actions', 'confirmed'])
->withTrashed()
->make(true);
¡Bien!
tal vez permitir
->rawColumns(['*'])
?
@divdax tal vez intente usar ->escapeColumns([])
para lograr el mismo resultado.
muchas gracias esto es muy util
->escapeColumns([]) funcionó para mí. rawColumns('column_with_html') no lo hizo.
Usando laravel 5.5 con "yajra/laravel-datatables-oracle": "~8.0"
Nara, rawColumns toma un argumento de matriz, por lo que debería ser rawColumns(['column_with_html'])
Si desea representar una vista en una columna, puede hacer esto:
->editColumn('action', function(User $u){
return view('users.action-btns', ['id'=>$u->id])->render();
})
Si estoy editando una columna para representarla con una vista, ¿no se puede suponer de forma predeterminada que la hoja escapará por completo de la vista y, por lo tanto, no es necesario volver a escapar? Una columna editada con una vista podría configurarse automáticamente (de forma predeterminada) para que sea sin formato, al igual que una columna action
(aunque los documentos no mencionan eso).
tengo el mismo problema, y mi amigo me dice que agregue ->escapeColumns([]), y funciona.
`si ($solicitud->ajax()) {
$ajax = Datatables::of(Admin::query())->escapeColumns([])->make(true);
devolver $ajax;
}
$dataTable = $htmlBuilder
->addColumn(['data' => 'admin_id', 'name' => 'admin_id', 'class' => 'id-column', 'title' => 'Id', 'searchable' => false, 'render' => function () {
$editUrl = route('backend.staff.edit', '');
return "function(data,type,full,meta){ return '<a href=" . $editUrl . "/'+data+'>'+data+'</a>'; }";
}])
->addColumn(['data' => 'username', 'name' => 'username', 'title' => trans('default.name'), 'class' => 'name-column', 'render' => function () {
$editUrl = route('backend.staff.edit', '');
return "function(data,type,full,meta){ return '<a href=" . $editUrl . "/'+full.admin_id+'>'+data+'</a>'; }";
}])
->addColumn(['data' => 'ip_address', 'name' => 'ip_address', 'title' => trans('default.ip_address')])
->addColumn(['data' => 'last_login', 'name' => 'last_login', 'title' => trans('default.last_login'), 'class' => 'date-column', 'searchable' => false])
->addColumn(['data' => 'html_status', 'name' => 'html_status', 'title' => trans('default.status'), 'class' => 'status-column', 'searchable' => false])
->addAction(['data' => 'action_button', 'name' => 'action', 'title' => trans('default.action'), 'class' => 'actions-column'])`
@tonihidayt ¿Entiendes lo que hace escapeColumns([])
? Me parece que deshabilitó TODO el escape de HTML al establecer NO columnas para aplicar el escape de HTML. Esta puede ser una manera fácil de solucionar un problema, que luego lo lleva a una situación peligrosa en otras circunstancias.
Esto está funcionando correctamente para mí.
Estoy de acuerdo con @judgej . No quiero arriesgarme a escapar de TODAS las columnas, pero la que quiero hacer sin procesar es un acceso y no produce un resultado sin procesar con $datatables->rawColumns(['full_link']);
@yajra Actualice esta documentación
https://datatables.yajrabox.com/eloquent/add-edit-remove-column
Comentario más útil