web-dev-qa-db-fra.com

Remplissez automatiquement la ligne d'objet du formulaire de contact

Y a-t-il un moyen de remplir automatiquement les champs dans Drupal 8 formulaires de contact, par exemple en passant la valeur dans l'URL? E.g.

/ contact/myform? Sujet = Sujet% 20line

Si Drupal n'a-t-il pas cet intégré, quelqu'un connaît-il d'un plugin JavaScript qui fera cela?

1
James

Il n'y a pas de manière intégrée de le faire avec le formulaire d'entité de contact. Le module carbonique semble être couvert dans ce scénario, mais cela ne fonctionne pas sur les formulaires de contact.

Comme alternative, une forme simple modifier avec un module personnalisé pourrait le faire sur l'extrémité arrière ou l'extrémité avant, avec un hook_form_alter() Invocation.

La solution backend pourrait modifier la valeur du formulaire par défaut:

function MYMODULE_form_alter(&$form, $form_state, $form_id) {
  // Set the default subject based off the subject query param.
  $default_subject = \Drupal::request()->query->get('subject');
  $form['subject']['widget'][0]['value']['#default_value'] = $default_subject;
}

Ou la solution frontale peut attacher un fichier JS personnalisé:

function MYMODULE_form_alter(&$form, $form_state, $form_id) {
  // Assuming mymodule has defined a drupal.mymodule library 
  // within mymodule.libraries.yml
  $form['#attached']['library'][] = 'mymodule/drupal.mymodule';
}

Ensuite, demandez à JS attachée à A Drupal comportement:

(function ($, Drupal, drupalSettings) {

  // Attach a drupal behavior that uses jQuery to alter the form value.
  Drupal.behaviors.mymodule = {
    attach: function () {
      var subject = '';
      // @TODO: parse location.search for the subject query param.
      $('#edit-subject-0-value').val(subject);
    }
  };

})(jQuery, Drupal, drupalSettings);
2
Shawn Conn