Laravel-datatables: [7.0] Tidak membuat HTML

Dibuat pada 27 Jan 2017  ·  18Komentar  ·  Sumber: yajra/laravel-datatables

Saya menggunakan Laravel Datatables 7, tetapi tabel saya tidak merender kode HTML. Itu merender HTML sebelumnya, tetapi ketika saya memperbarui ke Laravel DataTables baru ke 7 dari 6, itu berhenti merender HTML di kolom. http://prntscr.com/e11n84

Ini dengan Laravel DataTables 6 - http://prntscr.com/e11ph0

Komentar yang paling membantu

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

Semua 18 komentar

Hasil diloloskan secara default pada v7. Belum mendokumentasikan semua perubahan yang melanggar tetapi log perubahan harus memberikan beberapa petunjuk. Terima kasih!

Bagaimana saya bisa memperbaiki masalah yang sama tetapi dalam Layanan?

@brian2694 gunakan metode baru ->rawColumns(['column_with_html']) .

Saya memiliki masalah yang sama, adakah contoh untuk menggunakan 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);

Bagus!

Mungkin izinkan

->rawColumns(['*'])

?

@divdax mungkin mencoba menggunakan ->escapeColumns([]) untuk mencapai hasil yang sama.

terima kasih banyak ini sangat membantu

->escapeColumns([]) bekerja untuk saya. rawColumns('column_with_html') tidak.
Menggunakan laravel 5.5 dengan "yajra/laravel-datatables-Oracle": "~8.0"

Nara, rawColumns mengambil argumen array, jadi seharusnya rawColumns(['column_with_html'])

Jika ingin membuat tampilan di kolom, Anda bisa melakukan ini:

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

Jika saya mengedit kolom untuk merendernya dengan tampilan, apakah tidak dapat diasumsikan secara default bahwa tampilan akan sepenuhnya diloloskan oleh blade, sehingga tidak perlu meloloskan diri lagi? Kolom yang diedit dengan tampilan dapat diatur secara otomatis (secara default) menjadi mentah, sama seperti kolom action sudah (meskipun dokumen tidak menyebutkannya).

saya memiliki masalah yang sama, dan teman saya memberi tahu saya untuk menambahkan ->escapeColumns([]), dan berfungsi.

`jika ($permintaan->ajax()) {
$ajax = Tabel Data::of(Admin::query())->escapeColumns([])->make(true);
kembali $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 Apakah Anda mengerti apa yang dilakukan escapeColumns([]) ? Bagi saya sepertinya itu menonaktifkan SEMUA HTML yang lolos dengan menyetel TIDAK ADA kolom untuk menerapkan pelolosan HTML. Ini mungkin cara mudah untuk memperbaiki satu masalah, yang kemudian membawa Anda ke situasi berbahaya dalam keadaan lain.


->escapeColumns([])

Ini bekerja dengan benar untuk saya.

Saya setuju dengan @judgej . Saya tidak ingin mengambil risiko keluar dari SEMUA kolom, tetapi yang ingin saya buat mentah adalah pengakses dan tidak menghasilkan hasil mentah dengan $datatables->rawColumns(['full_link']);

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

Abdulhmid picture Abdulhmid  ·  3Komentar

techguydev picture techguydev  ·  3Komentar

shadoWalker89 picture shadoWalker89  ·  3Komentar

kamrava picture kamrava  ·  3Komentar

ghost picture ghost  ·  3Komentar