Puncte:0

Care este o modalitate bună de a trimite notificări prin e-mail la crearea unei noi entități?

drapel hk

Încercam să văd care este cel mai bun mod de a gestiona notificările personalizate în jurul Feedback pe site modul. Modulul creează o nouă entitate de tip WebsiteFeedback (o entitate personalizată definită de modul) ori de câte ori un utilizator trimite feedback folosind modulul

Înțeleg Notificări de entitate modul, dar care nu pare să aibă o versiune Drupal 9.

Este ceva gata pentru Drupal 9?

Jaypan avatar
drapel de
Modulul Reguli ar trebui să facă acest lucru pentru tine.
apaderno avatar
drapel us
Votez închiderea acestei întrebări, deoarece solicită recomandări sau sugestii cu privire la găzduire, cărți, instrumente, module, teme, distribuții, tutoriale sau alte resurse externe.
drapel fr
O soluție care utilizează reguli este documentată aici: https://www.drupal.org/docs/8/modules/d8-rules-essentials/examples/email-examples/sending-html-email Tot ce trebuie să faceți este să importați acea regulă și utilizați interfața de utilizare pentru a o modifica ușor pentru cazul dvs. de utilizare.
Puncte:1
drapel cn

Dacă doriți să îl codificați singur, iată un exemplu simplu pentru a trimite o notificare prin e-mail de fiecare dată când a cometariu entitatea este postată (luat de pe un site real cu o curățare minoră, dar s-ar putea să fi rupt ceva scoțând codul specific site-ului):

function mymodule_comment_insert(Comentariu $entity) {
  mymodule__mail_notify_admin('noul_comment', $entity, '', 'inserat');
}

funcția mymodule_mail_notify_admin($key, $entity, $title, $moderation_state) {
  $mailManager = \Drupal::service('plugin.manager.mail');
  $modul = 'modul meu';
  $to_email = '[email protected]';
  $cale = $entity->toUrl('canonical', ['absolute' => TRUE])->toString();
  $params['mesaj'] = $cale;
  $params['titlu'] = $titlu;
  $params['moderation_state'] = $moderation_state;
  $langcode = \Drupal::currentUser()->getPreferredLangcode();

  $rezultat = $mailManager->mail($modul, $key, $to_email, $langcode, $params);
  dacă ($rezultat['rezultat'] !== TRUE) {
    $message = t('Eroare la trimiterea notificării prin e-mail către @email.', ['@email' => $to_email]);
    \Drupal::logger('mymodule')->error($mesaj);
    întoarcere;
  }
  else {
    $message = t('Notificare prin e-mail trimisă la @email', ['@email' => $to_email]);
    \Drupal::logger('mymodule')->notice($mesaj);
  }
}

/*
 * Pentru trimitere:
 * http://valuebound.com/resources/blog/how-to-send-mail-programmatically-drupal-8
 */
funcția mymodule_mail($cheie, &$mesaj, $params) {
  $message['de la'] = \Drupal::config('system.site')->get('mail');

  comutator ($key) {
    caz „new_comment”:
      // https://www.drupal.org/project/simple_comment_email_notification
      $message['subject'] = t('Comentariu nou');
      $message['body'][] = t('Puteți verifica pagina la :unapprovedCommentsUrl pentru comentarii neaprobate și :publishedCommentsUrl pentru comentarii publicate.', [
        ':unapprovedCommentsUrl' => \Drupal::request()->getSchemeAndHttpHost() . „/admin/content/comment/approval”,
        ':publishedCommentsUrl' => \Drupal::request()->getSchemeAndHttpHost() . „/admin/content/comment”,
      ]);
      pauză;

    Mod implicit:
      $opțiuni = [
        'langcode' => $message['langcode'],
      ];
      // @todo Remediați evadarea HTML.
      // $message['body'][] = Html::escape($params['message']);.
      $message['body'][] = $params['mesaj'];
      $message['subject'] = t('@title @ms pe site-ul meu',
        [
          '@ms' => $params['moderation_state'],
          '@title' => $params['titlu'],
        ],
        $opțiuni);
      pauză;
  }
}
drapel fr
Regulile vă oferă o modalitate de a face exact același lucru fără să scrieți și să vă mențineți propriul cod. În plus, cu Rules aveți o interfață de utilizare care vă va permite să modificați cu ușurință fluxul de lucru dacă nevoile dvs. evoluează. În plus, cu Rules nu trebuie să vă faceți griji cu privire la scrierea propriului cod de e-mail, care poate fi predispus la erori și complicat. De exemplu, doriți să utilizați HTML în e-mailurile dvs.? Nu cu codul de mai sus... Regulile este ca Vizualizări, dar pentru fluxul de lucru. Sigur că puteți scrie propria interogare de cod personalizat în baza de date pentru a afișa orice doriți, dar Views este mai ușor de utilizat și de întreținut pentru majoritatea cazurilor de utilizare. La fel și cu Reguli.
drapel cn
@anonymous Sigur, regulile sunt o soluție. Dar unii oameni nu vor să aibă încredere într-un modul care a avut doar o versiune alfa pentru întregul ciclu de viață Drupal 8. Pentru unii oameni, acoperirea de securitate contează.
drapel fr
Și ce este atât de sigur la codul personalizat față de codul care este folosit/testat de mii de site-uri? Astfel de atitudini sunt motivul pentru care majoritatea modulelor merg direct la o ediție „stabilă”, chiar dacă nu au teste, nicio cale de actualizare între versiunile „stabile” și au modificări BC între versiunile minore. Nu este nimic „stabil” la ei, cu excepția numelui și, după orice alt nume, ar împuți la fel de rău (scuze lui Shakespeare).Merită să fii un consumator educat, iar dacă judeci doar pe baza faptului că lansarea este „stabilă”, atunci te înșeli singur. Cuvântul nu are sens.
drapel cn
Nu am spus „stabil”, am spus **acoperire de securitate**. Modul alfa = nu este supus politicii de divulgare a securității drupal.org. De ce ești în alfa, acum șase ani? Și ar putea avea o zi zero dezvăluită în orice moment.
drapel cn
Rules este un modul complicat și deschide o suprafață uriașă de atac, dacă tot ceea ce aveți nevoie este să trimiteți niște e-mailuri. Nu spun că este o abordare greșită, dar cu siguranță nu este automat cea mai sigură și mai sigură abordare pentru a instala un modul alfa.
drapel fr
Evident că nu sunt de acord, dar nu acesta este locul pentru a discuta. Cu toate acestea, te înșeli total când spui că Rules nu are acoperire de securitate - DA.
drapel cn
@anonymous Mă bucur să fiu corectat dacă am spus ceva greșit. Ați putea vă rog să-mi oferiți un link către unde scrie că Regulile pentru D8/9 are acoperire de securitate? Tocmai am verificat pagina modulului Reguli și spune „Versiunile stabile pentru acest proiect sunt acoperite de politica de consiliere de securitate.” Acesta este doar un standard drupal.org, dar nu se menționează o excepție specială a acoperirii de securitate pentru Reguli.

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.