DataTables PHP динамическое редактирование / удаление ссылок на основе разрешений пользователей - PullRequest
0 голосов
/ 22 апреля 2019

У меня есть Datatable (Boostrap4), где мне нужно редактировать и удалять ссылки для каждой строки.Что мне трудно понять, так это то, как динамически создавать эти ссылки на основе пользователя.Мне нужно, чтобы ссылки на редактирование и удаление отображались только для зарегистрированных в данный момент пользовательских элементов (и ни у кого другого), если это возможно.

Я знаю, что могу обернуть строку defaultContent тегами PHP и выполнять логику,Чего мне не хватает, так это того, есть ли способ сравнить (скажем) имя и фамилию, чтобы увидеть, соответствует ли этот человек зарегистрированному пользователю, чтобы контролировать, какие элементы имеют ссылки на редактирование / удаление.

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>'
    }                   
]

1 Ответ

0 голосов
/ 23 апреля 2019

Если ваши ссылки «Изменить / Удалить» позволяют пользователю изменять внутренние данные, вам потребуется аутентифицировать серверную часть пользователя перед тем, как вносить изменения в любом случае.

В настоящее время, поскольку вам нужно предоставить возможность изменять собственные данные для авторизованных пользователей, вы можете создавать отдельные пользовательские данные для подачи в DataTable, так что для каждого набора строк будет установлен флаг editable./ unset, на основании разрешения пользователя.

При этом вы можете использовать опцию 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...