Tôi đang làm việc trên một hệ thống mà chúng tôi dựa vào rất nhiều "quản trị viên / người quản lý" gửi email cho người dùng từ cơ sở dữ liệu. Một trong những tính năng chính là có thể gửi email cho nhiều người cùng một lúc, với thông tin cụ thể liên quan đến từng người trong số họ. Một tính năng quan trọng khác là có thể tạo email thủ công, bởi vì nó có xu hướng cần thiết phải sửa đổi một chút mỗi lần, nhưng có một mẫu cơ bản giúp tiết kiệm rất nhiều thời gian.
Đối với điều này, chúng tôi có giải pháp "mẫu" điển hình, nơi chúng tôi có một mẫu trông giống như thế này:
Hello {{recipient.full_name}},
Your application to {{activity.title}} has been accepted.
You have requested to participate on dates {{application.dates}}, in role {{application.role}}
Blah blah blah
Vấn đề chúng ta gặp phải rõ ràng là (như chúng ta mong đợi), các nhà quản lý không có được toàn bộ ý tưởng "biến số" và họ làm những việc như ghi đè lên chúng, điều đó không cho phép họ gửi email cho nhiều người cùng một lúc, giả sử những thứ đó sẽ không được thay thế và hệ thống bị hỏng, hoặc thậm chí những thứ không thể giải thích được như "Xin chào {{John}}".
Vấn đề lớn là điều này không bị rớt xuống, như thường lệ, đến phần "quản trị viên" nơi chỉ có một vài người dùng có quyền truy cập để chỉnh sửa các mẫu được tự động gửi đi và họ sẽ biết họ đang làm gì. Mọi người dùng của hệ thống đều gặp phải vấn đề này.
Giải pháp rõ ràng là thay thế các biến trước khi hiển thị mẫu này để người dùng chỉnh sửa, nhưng điều đó không hiệu quả khi gửi email cho nhiều người.
Đây có vẻ như là một vấn đề khá phổ biến và chúng tôi hy vọng rằng ai đó đã giải quyết nó.
Bạn đã thấy bất cứ nơi nào / tạo ra / có thể nghĩ ra giải pháp tốt cho vấn đề này?
Cập nhật
Điều cuối cùng tôi làm dựa trên câu trả lời của Daniel B là phát hiện, dựa trên vị trí con trỏ và vị trí {{}} trong mã cho dù người dùng hiện đang "bên trong một biến" hay "bên ngoài". Ở bên trong, tôi cho thấy một đoạn văn bản nhỏ bên dưới văn bản lớn giải thích rằng điều này sẽ được thay thế và họ có thể xóa nó hoàn toàn nếu họ muốn, nhưng họ không thể chỉnh sửa nó.
Tôi làm điều này trên Click, onChange, onKeyDown, onKeyUp. Đối với các sự kiện "khóa", nếu chúng ta ở trong một biến, tôi chỉ trả về ĐÚNG nếu keyCode là một trong một vài khóa "điều hướng". Mặt khác, tôi trả về FALSE, điều này ngăn chặn hiệu quả phiên bản của biến đó.
Nó không hoàn hảo, nhưng nó rất rẻ, và có vẻ hiệu quả.