Laravel-datatables: [7.0] No muestra HTML

Creado en 27 ene. 2017  ·  18Comentarios  ·  Fuente: yajra/laravel-datatables

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

Comentario más útil

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

Todos 18 comentarios

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.


->columnas de escape([])

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']);

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

FilipeBorges1993 picture FilipeBorges1993  ·  3Comentarios

jgatringer picture jgatringer  ·  3Comentarios

Abdulhmid picture Abdulhmid  ·  3Comentarios

SGarridoDev picture SGarridoDev  ·  3Comentarios

vipin733 picture vipin733  ·  3Comentarios