DataTables PHP动态编辑/删除基于用户权限的链接
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DataTables PHP动态编辑/删除基于用户权限的链接相关的知识,希望对你有一定的参考价值。
我有一个Datatable(Boostrap4),我需要编辑和删除每一行的链接。我弄清楚的是如何根据用户动态创建这些链接。如果可能的话,我需要编辑和删除链接才能显示当前登录用户自己的项目(并且没有其他项目)。
我知道我可以用php标签包装'defaultContent'行并执行逻辑。我缺少的是,是否有任何方法可以比较(比方说)名字和姓氏,以查看该人是否与登录用户匹配,以控制哪些项目具有编辑/删除链接。
aoColumns: [
{ mData: 'first_name' } ,
{ mData: 'last_name' },
{ mData: 'note' },
{
data: null,
className: "left",
defaultContent: '<a style="display:inline-block;" href="edit.php" class="editor_edit">Edit</a> / <a href="delete.php" class="editor_remove">Delete</a>'
}
]
答案
如果您的编辑/删除链接允许用户修改后端数据,那么在提交更改之前,您将需要对用户服务器端进行身份验证。
目前,由于您需要提供修改拥有数据给授权用户的可能性,您可以生成单独的基于用户的数据来提供DataTable,以便根据用户的权限为每一行设置/取消设置editable
标志。
在此之后,您可以使用columns.render
选项来渲染或不编辑//删除链接。
下面的例子,演示了这种方法:
//data supplied to DataTables, with 'editable' property
//dependant on user permissions, checked server-side
const srcData = [
{fname: 'Steve', lname: 'Rogers', note: '', editable: true},
{fname: 'Anthony', lname: 'Stark', note: '', editable: false},
{fname: 'Peter', lname: 'Parker', note: '', editable: true},
{fname: 'Thor', lname: 'Odinsson', note: '', editable: false},
];
//DataTables initialization with fourth column rendered
//as 'Edit/Delete' links visible for editable rows only
const dataTable = $('#mytable').DataTable({
dom: 't',
data: srcData,
columns: [
{title: 'First Name', data: 'fname'},
{title: 'Last Name', data: 'lname'},
{title: 'Note', data: 'note'},
{title: '', data: null, render: (data, type, row, meta) => row.editable ? '<a style="display:inline-block;" href="edit.php" class="editor_edit">Edit</a> / <a href="delete.php" class="editor_remove">Delete</a>' : ''}
]
});
<!doctype html>
<html>
<head>
<script type="application/javascript" src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script type="application/javascript" src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css">
</head>
<body>
<table id="mytable"></table>
</body>
</html>
以上是关于DataTables PHP动态编辑/删除基于用户权限的链接的主要内容,如果未能解决你的问题,请参考以下文章