Điểm:0

Cách hay để gửi thông báo qua email khi tạo một thực thể mới là gì?

lá cờ hk

Tôi đang cố gắng xem cách tốt nhất để xử lý các thông báo tùy chỉnh xung quanh Phản hồi trang web mô-đun. Mô-đun tạo một thực thể mới thuộc loại WebsiteFeedback (một thực thể tùy chỉnh do mô-đun xác định) bất cứ khi nào người dùng gửi phản hồi bằng mô-đun

tôi hiểu rồi Thông báo thực thể module nhưng điều đó dường như không có bản phát hành Drupal 9.

Đã có thứ gì sẵn sàng cho Drupal 9 chưa?

Jaypan avatar
lá cờ de
Mô-đun Quy tắc sẽ làm điều này cho bạn.
apaderno avatar
lá cờ us
Tôi đang bỏ phiếu để đóng câu hỏi này vì nó yêu cầu đề xuất hoặc đề xuất về lưu trữ, sách, công cụ, mô-đun, chủ đề, bản phân phối, hướng dẫn hoặc các tài nguyên bên ngoài trang web khác.
lá cờ fr
Một giải pháp sử dụng Quy tắc được ghi lại tại đây: https://www.drupal.org/docs/8/modules/d8-rules-essentials/examples/email-examples/sending-html-email Tất cả những gì bạn phải làm là nhập Quy tắc đó và sử dụng giao diện người dùng để sửa đổi một chút cho trường hợp sử dụng của bạn.
Điểm:1
lá cờ cn

Nếu bạn muốn tự viết mã, đây là một ví dụ đơn giản để gửi thông báo qua email mỗi khi Bình luận thực thể được đăng (được lấy từ một trang web thực tế với việc dọn dẹp nhỏ, nhưng tôi có thể đã làm hỏng thứ gì đó khi lấy mã dành riêng cho trang web):

function mymodule_comment_insert(Comment $entity) {
  mymodule__mail_notify_admin('new_comment', $entity, '', 'insert');
}

function mymodule_mail_notify_admin($key, $entity, $title, $moderation_state) {
  $mailManager = \Drupal::service('plugin.manager.mail');
  $mô-đun = 'mô-đun của tôi';
  $to_email = '[email protected]';
  $path = $entity->toUrl('canonical', ['absolute' => TRUE])->toString();
  $params['message'] = $path;
  $params['title'] = $title;
  $params['moderation_state'] = $moderation_state;
  $langcode = \Drupal::currentUser()->getPreferredLangcode();

  $result = $mailManager->mail($module, $key, $to_email, $langcode, $params);
  if ($result['result'] !== TRUE) {
    $message = t('Lỗi khi gửi thông báo qua email tới @email.', ['@email' => $to_email]);
    \Drupal::logger('mymodule')->error($message);
    trở lại;
  }
  khác {
    $message = t('Email thông báo đã được gửi tới @email', ['@email' => $to_email]);
    \Drupal::logger('mymodule')->notice($message);
  }
}

/*
 * Để tham khảo:
 * http://valuebound.com/resources/blog/how-to-send-mail-programmatically-drupal-8
 */
function mymodule_mail($key, &$message, $params) {
  $message['from'] = \Drupal::config('system.site')->get('mail');

  công tắc ($key) {
    trường hợp 'new_comment':
      // https://www.drupal.org/project/simple_comment_email_notification
      $message['subject'] = t('Bình luận mới');
      $message['body'][] = t('Bạn có thể kiểm tra trang tại :unapprovedCommentsUrl để biết các nhận xét chưa được phê duyệt và :publishedCommentsUrl để biết các nhận xét đã xuất bản.', [
        ':unapprovedCommentsUrl' => \Drupal::request()->getSchemeAndHttpHost() . '/quản trị/nội dung/bình luận/phê duyệt',
        ':publishedCommentsUrl' => \Drupal::request()->getSchemeAndHttpHost() . '/admin/nội dung/bình luận',
      ]);
      nghỉ;

    mặc định:
      tùy chọn $ = [
        'langcode' => $message['langcode'],
      ];
      // @todo Sửa lỗi thoát HTML.
      // $message['body'][] = Html::escape($params['message']);.
      $message['body'][] = $params['message'];
      $message['subject'] = t('@title @ms trên trang web của tôi',
        [
          '@ms' => $params['moderation_state'],
          '@title' => $params['title'],
        ],
        tùy chọn $);
      nghỉ;
  }
}
lá cờ fr
Các quy tắc cung cấp cho bạn một cách để thực hiện chính xác điều tương tự mà không cần viết và duy trì mã của riêng bạn. Ngoài ra, với Quy tắc, bạn có giao diện người dùng cho phép bạn dễ dàng sửa đổi quy trình làm việc nếu nhu cầu của bạn phát triển. Ngoài ra, với Quy tắc, bạn không phải lo lắng về việc viết mã email của riêng mình, điều này có thể dễ xảy ra lỗi và phức tạp. Ví dụ: bạn muốn sử dụng HTML trong email của mình? Không phải với mã trên ... Quy tắc giống như Chế độ xem, nhưng dành cho quy trình làm việc. Chắc chắn bạn có thể viết truy vấn mã tùy chỉnh của riêng mình vào cơ sở dữ liệu để hiển thị bất kỳ thứ gì bạn muốn, nhưng Chế độ xem dễ sử dụng và bảo trì hơn đối với hầu hết các trường hợp sử dụng. Tương tự như vậy với Rules.
lá cờ cn
@anonymous Chắc chắn rồi, Quy tắc là một giải pháp. Nhưng một số người không muốn tin tưởng vào một mô-đun chỉ có phiên bản alpha cho toàn bộ vòng đời của Drupal 8. Đối với một số người, bảo hiểm an ninh quan trọng.
lá cờ fr
Và điều gì an toàn về mã tùy chỉnh so với mã đang được hàng nghìn trang web sử dụng/thử nghiệm? Những thái độ như vậy là lý do tại sao hầu hết các mô-đun chuyển thẳng sang bản phát hành "ổn định" mặc dù chúng không có thử nghiệm, không có đường dẫn nâng cấp giữa các phiên bản "ổn định" và có các thay đổi phá vỡ BC giữa các bản phát hành điểm nhỏ. Không có gì "ổn định" về chúng ngoại trừ cái tên, và với bất kỳ cái tên nào khác, chúng cũng sẽ bốc mùi như vậy (xin lỗi Shakespeare).Là một người tiêu dùng có học thức, bạn nên đánh giá dựa trên việc bản phát hành có "ổn định" hay không thì bạn đang lừa dối chính mình. Từ này không có nghĩa.
lá cờ cn
Tôi không nói "ổn định", tôi nói **phạm vi bảo mật**. Mô-đun alpha = không tuân theo chính sách tiết lộ bảo mật của drupal.org. Đã ở giai đoạn alpha để làm gì, sáu năm nay? Và có thể tiết lộ zero-day bất cứ lúc nào.
lá cờ cn
Quy tắc là một mô-đun phức tạp và mở ra một bề mặt tấn công lớn nếu tất cả những gì bạn cần là gửi một số email. Không nói đó là cách tiếp cận sai, nhưng nó chắc chắn không phải là cách tiếp cận an toàn nhất, an toàn nhất để cài đặt mô-đun alpha.
lá cờ fr
Rõ ràng là tôi không đồng ý, nhưng đây không phải là nơi để thảo luận về nó. Tuy nhiên, bạn đã hoàn toàn sai khi nói Quy tắc không có phạm vi bảo mật - nó CÓ.
lá cờ cn
@anonymous Tôi rất vui khi được đính chính nếu tôi nói điều gì đó thực sự không chính xác. Bạn có thể vui lòng cho tôi liên kết đến nơi ghi Quy tắc cho D8/9 có bảo hiểm không? Tôi vừa kiểm tra trang mô-đun Quy tắc và nó cho biết `Bản phát hành ổn định cho dự án này được bảo vệ bởi chính sách tư vấn bảo mật.` Đây chỉ là bản tóm tắt của drupal.org, nhưng không có đề cập đến ngoại lệ đặc biệt về phạm vi bảo mật cho Quy tắc.

Đă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.