Рейтинг:4

Как предотвратить удаление узла при выполнении операции удаления?

флаг cn

Я хочу предотвратить удаление узла, пока на нем выполняется операция удаления. Например, в панели администрирования, если пользователь нажимает «Удалить» на узле, узел не должен удаляться, если он не является администратором. Разрешения и роли пользователей для меня не проблема, проблема в "остановке" операции удаления.

я нашел hook_entity_predelete(), что идеально, он запускается прямо перед удалением узла, но я не знаю, как остановить операцию удаления. Я хочу сделать некоторые вещи внутри этого хука и предотвратить удаление узла.

Я также видел эту проблему: Как предотвратить удаление узла? с крючок_node_access(), но он не работает так, как мне нужно.

hook_entity_delete() тоже не нормально, потому что Этот хук запускается после удаления объекта из хранилища.. Мне нужно предотвратить это.

Спасибо за вашу помощь.

Kevin avatar
флаг in
Самый простой ответ — удалить из данной роли разрешение «Удалить любое» или «Удалить собственное» для каждого типа контента. Это должно удалить кнопку в пользовательском интерфейсе. Хуки в этом случае не помогут, т.к. они предназначены для запуска перед операцией, а не для ее остановки - она ​​все равно будет продолжаться. В основном это содержится в EntityBase::delete. В противном случае ответов Клайва и Бердирса на связанный вопрос должно быть достаточно.
sailormoon avatar
флаг cn
Спасибо за ваш комментарий, я нашел другое решение (я добавил его ниже в качестве ответа).
Рейтинг:1
флаг cn

I found a solution that satisfies me: I use hook_form_alter(). When you always try to delete a node there is a confirmation form, with "Delete" and "Cancel" buttons. I'm altering that form - in some cases (which depend of users permissions) I am unsetting "Delete" button (with unset($form['actions']['submit'], so delete is not possible) and adding my own button instead of it, with a callback function. I am also altering title of that form and description.

leymannx avatar
флаг ne
Вероятно, будущим читателям будет полезно увидеть немного кода

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.