Puncte:4

Cum să preveniți ștergerea unui nod în timp ce efectuați o operație de ștergere?

drapel cn

Vreau să împiedic ștergerea unui nod în timp ce se efectuează o operație de ștergere pe el. De exemplu, în panoul de administrare, dacă utilizatorul face clic pe „Șterge” pe nod, nodul nu ar trebui să fie șters dacă nu este administrator. Permisiunile și rolurile de utilizator nu sunt o problemă pentru mine, problema este „oprirea” operației de ștergere.

am găsit hook_entity_predelete(), ceea ce este perfect, rulează exact înainte de a șterge nodul, dar nu știu cum să opresc operația de ștergere. Vreau să fac unele lucruri în acel cârlig și să împiedic ștergerea nodului.

Am vazut si problema asta: Cum împiedic ștergerea unui Nod? cu hook_node_access(), dar nu funcționează așa cum am nevoie.

hook_entity_delete() nici nu este ok, pentru că Acest cârlig rulează odată ce entitatea a fost ștearsă din stocare. Trebuie să o previn.

Multumesc pentru ajutor.

Kevin avatar
drapel in
Cel mai simplu răspuns este de a elimina permisiunea de la rolul lor de „Șterge orice” sau „Șterge propriul” pe tip de conținut. Acest lucru ar trebui să elimine butonul din interfața cu utilizatorul. Cârligele nu vor ajuta în acest caz, deoarece sunt destinate să ruleze înainte de operație, nu să o oprească - va continua oricum. Acesta este conținut în EntityBase::delete, în principal. În caz contrar, răspunsurile Clive și Berdirs la întrebarea legată ar trebui să fie suficiente.
sailormoon avatar
drapel cn
Multumesc pentru comentariu, am gasit o alta solutie (am adaugat-o mai jos ca raspuns).
Puncte:1
drapel cn

Am gasit o solutie care ma satisface: folosesc hook_form_alter(). Când încerci întotdeauna să ștergi un nod există un formular de confirmare, cu butoanele „Șterge” și „Anulează”. Modific acea formă - în unele cazuri (care depind de permisiunile utilizatorilor) desetez butonul „Șterge” (cu unset($form['actions']['submit'], deci ștergerea nu este posibilă) și adăugarea propriului meu buton în loc de acesta, cu o funcție de apel invers. De asemenea, modific titlul acestei forme și descrierea.

leymannx avatar
drapel ne
Probabil că ar fi util pentru viitorii cititori să vadă o parte din cod

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.