Я использую Laravel Datatables 7, но моя таблица не отображает HTML-код. Раньше он отображал HTML, но когда я обновил Laravel DataTables до 7 с 6, он перестал отображать HTML в столбце. http://prntscr.com/e11n84
Это с Laravel DataTables 6 - http://prntscr.com/e11ph0
Результаты экранируются по умолчанию в v7. Еще не задокументированы все критические изменения, но журнал изменений должен дать некоторые подсказки. Спасибо!
Как я могу решить ту же проблему, но в сервисе?
@brian2694 используйте новый метод ->rawColumns(['column_with_html'])
.
У меня похожая проблема, есть ли пример использования 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);
Хорошо!
Может быть, разрешить
->rawColumns(['*'])
?
@divdax , возможно, попробуйте использовать ->escapeColumns([])
для достижения того же результата.
большое спасибо это очень полезно
->escapeColumns([]) сработало для меня. rawColumns('column_with_html') нет.
Использование laravel 5.5 с "yajra/laravel-datatables-oracle": "~8.0"
Нара, rawColumns принимает аргумент массива, поэтому он должен быть rawColumns(['column_with_html'])
Если вы хотите отобразить представление в столбце, вы можете сделать это:
->editColumn('action', function(User $u){
return view('users.action-btns', ['id'=>$u->id])->render();
})
Если я редактирую столбец, чтобы отобразить его с представлением, то нельзя ли по умолчанию предположить, что представление будет полностью экранировано лезвием, и поэтому не нужно снова экранировать? Столбец, отредактированный с помощью представления, может быть автоматически установлен (по умолчанию) как необработанный, как уже есть столбец action
(хотя в документах это не упоминается).
у меня такая же проблема, и мой друг сказал мне добавить ->escapeColumns([]), и это работает.
`если ($запрос->ajax()) {
$ajax = Datatables::of(Admin::query())->escapeColumns([])->make(true);
вернуть $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 Вы понимаете, что делает escapeColumns([])
? Мне кажется, что он отключил ВСЕ экранирование HTML, установив НЕТ столбцов для применения экранирования HTML. Это может быть простой способ решить одну проблему, которая затем приведет вас в опасную ситуацию при других обстоятельствах.
Это работает правильно для меня.
Я согласен с @judgej . Я не хочу рисковать экранированием ВСЕХ столбцов, но тот, который я хочу сделать необработанным, является аксессором и не дает необработанного результата с $datatables->rawColumns(['full_link']);
@yajra Пожалуйста, обновите эту документацию
https://datatables.yajrabox.com/eloquent/add-edit-remove-column
Самый полезный комментарий