我正在使用 Laravel Datatables 7,但我的表格没有呈现 HTML 代码。 它以前渲染 HTML,但是当我将新的 Laravel DataTables 从 6 更新到 7 时,它停止在列中渲染 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([]) 和它的作品。
`if ($request->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([])
是做什么的吗? 在我看来,它通过设置 NO 列来应用 HTML 转义来禁用所有 HTML 转义。 这可能是解决一个问题的一种简单方法,然后在其他情况下会导致您陷入危险境地。
这对我来说是正确的。
我同意@judgej 。 我不想冒险转义所有列,但我想要制作原始的是一个访问器,并且不会产生带有$datatables->rawColumns(['full_link']);
的原始结果
最有用的评论