Điểm:4

Làm cách nào để ngăn một nút bị xóa trong khi thực hiện thao tác xóa?

lá cờ cn

Tôi muốn ngăn một nút bị xóa trong khi thao tác xóa được thực hiện trên nút đó. Ví dụ: trong bảng quản trị nếu người dùng nhấp vào "Xóa" trên nút, nút đó sẽ không bị xóa nếu anh ta không phải là quản trị viên. Quyền và vai trò người dùng không phải là vấn đề đối với tôi, vấn đề là thao tác xóa "dừng".

tôi đã tìm thấy hook_entity_predelete(), thật hoàn hảo, nó chạy chính xác ngay trước khi xóa nút, nhưng tôi không biết cách dừng thao tác xóa. Tôi muốn thực hiện một số việc bên trong cái móc đó và ngăn việc xóa nút.

Tôi cũng thấy vấn đề này: Làm cách nào để ngăn một Nút bị xóa? với hook_node_access(), nhưng nó không hoạt động như tôi cần.

hook_entity_delete() cũng không ổn, bởi vì Móc này chạy sau khi thực thể đã bị xóa khỏi bộ lưu trữ. Tôi cần phải ngăn chặn nó.

Cảm ơn bạn đã giúp đỡ.

Kevin avatar
lá cờ in
Câu trả lời đơn giản nhất là xóa quyền khỏi vai trò đã cho của họ là "Xóa bất kỳ" hoặc "Xóa riêng" cho mỗi loại nội dung. Điều này sẽ loại bỏ nút trong giao diện người dùng. Các hook sẽ không giúp ích gì trong trường hợp này, vì chúng được dùng để chạy trước khi thao tác chứ không phải dừng nó - nó vẫn sẽ tiếp tục. Điều này chủ yếu được chứa trong EntityBase::delete. Mặt khác, câu trả lời của Clive và Berdirs trong câu hỏi được liên kết là đủ.
sailormoon avatar
lá cờ cn
Cảm ơn bạn đã nhận xét, tôi đã tìm thấy một giải pháp khác (tôi đã thêm nó bên dưới làm câu trả lời).
Điểm:1
lá cờ cn

Tôi tìm thấy một giải pháp thỏa mãn tôi: Tôi sử dụng hook_form_alter(). Khi bạn luôn cố gắng xóa một nút, sẽ có một biểu mẫu xác nhận, với các nút "Xóa" và "Hủy". Tôi đang thay đổi biểu mẫu đó - trong một số trường hợp (tùy thuộc vào quyền của người dùng), tôi đang bỏ đặt nút "Xóa" (với unset($form['actions']['submit'], vì vậy không thể xóa) và thêm nút của riêng tôi thay vì nút đó, với chức năng gọi lại. Tôi cũng đang thay đổi tiêu đề của biểu mẫu và mô tả đó.

leymannx avatar
lá cờ ne
Có lẽ sẽ hữu ích cho những người đọc trong tương lai để xem một chút mã

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.