Laravel-datatables: [7.0] HTML wird nicht gerendert

Erstellt am 27. Jan. 2017  ·  18Kommentare  ·  Quelle: yajra/laravel-datatables

Ich verwende Laravel Datatables 7, aber meine Tabelle gibt keinen HTML-Code wieder. Es hat vorher HTML gerendert, aber als ich auf neue Laravel DataTables von 6 auf 7 aktualisiert habe, hat es aufgehört, HTML in der Spalte zu rendern. http://prntscr.com/e11n84

Dies ist mit Laravel DataTables 6 - http://prntscr.com/e11ph0

Hilfreichster Kommentar

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

Alle 18 Kommentare

Ergebnisse werden standardmäßig auf v7 maskiert. Ich habe noch nicht alle wichtigen Änderungen dokumentiert, aber das Änderungsprotokoll sollte einige Hinweise liefern. Danke!

Wie kann ich das gleiche Problem beheben, aber im Dienst?

@brian2694 verwende die neue Methode ->rawColumns(['column_with_html']) .

Ich habe ein ähnliches Problem. Gibt es ein Beispiel für die Verwendung von 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);

Gut!

Vielleicht zulassen

->rawColumns(['*'])

?

@divdax versuchen Sie vielleicht, ->escapeColumns([]) zu verwenden, um das gleiche Ergebnis zu erzielen.

vielen dank das ist sehr hilfreich

->escapeColumns([]) hat bei mir funktioniert. rawColumns('column_with_html') nicht.
Verwendung von Laravel 5.5 mit "yajra/laravel-datatables-oracle": "~8.0"

Nara, rawColumns nimmt ein Array-Argument, also sollte es rawColumns(['column_with_html']) sein

Wenn Sie eine Ansicht in einer Spalte rendern möchten, können Sie Folgendes tun:

  ->editColumn('action', function(User $u){
       return view('users.action-btns', ['id'=>$u->id])->render();
  })

Wenn ich eine Spalte bearbeite, um sie mit einer Ansicht zu rendern, kann dann nicht standardmäßig davon ausgegangen werden, dass die Ansicht von Blade vollständig maskiert wird und daher nicht erneut maskiert werden muss? Eine Spalte, die mit einer Ansicht bearbeitet wurde, könnte (standardmäßig) automatisch auf unformatiert eingestellt werden, genau wie es eine action -Spalte bereits ist (obwohl die Dokumentation dies nicht erwähnt).

Ich habe dasselbe Problem, und mein Freund sagt mir, ich solle ->escapeColumns([]) hinzufügen, und es funktioniert.

`if ($request->ajax()) {
$ajax = Datatables::of(Admin::query())->escapeColumns([])->make(true);
gib $ajax zurück;
}

    $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 Verstehst du, was escapeColumns([]) macht? Es sieht für mich so aus, als hätte es ALLE HTML-Escapezeichen deaktiviert, indem KEINE Spalten so eingestellt wurden, dass HTML-Escapezeichen angewendet werden. Dies kann eine einfache Möglichkeit sein, ein Problem zu beheben, das Sie dann unter anderen Umständen in eine gefährliche Situation führt.


->escapeColumns([])

Das funktioniert bei mir richtig.

Ich stimme @judgej zu. Ich möchte nicht riskieren, ALLE Spalten zu maskieren, aber diejenige, die ich roh machen möchte, ist ein Accessor und erzeugt kein Rohergebnis mit $datatables->rawColumns(['full_link']);

@yajra Bitte aktualisieren Sie diese Dokumentation

https://datatables.yajrabox.com/eloquent/add-edit-remove-column

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen