D8 Javascript en Módulos - pierregermain/MyDrupal GitHub Wiki

Links:

Link muy completo:

Añadir JS a un Form:

Imaginémos que nuestro módulo se llama publication_order

Definimos el libraries

publicationjs:
  version: 1.x
  js:
    js/publication.js: {}
  dependencies:
    - core/jquery
    - core/drupalSettings

Modificamos nuestro Form con hook_form_alter


<?php

/*
 * Implements hook_form_alter
 */

use Drupal\Core\Form\FormStateInterface;
use Symfony\Components\HttpFoundation\Request;

// TODO usar ENTITY_form_alter
function publication_order_form_alter(&$form, FormStateInterface $form_state, $form_id) {

  if ($form_id == 'node_publication_form' || 
      $form_id == 'node_publication_edit_form') {
    
    // NOTA: Si usas Kint no funcionarán los Ajax Calls
    kint('<> publication order > form_alter');

    $form['#attached']['library'][] = 'publication_order/publicationjs';

    // Si queremos mandar un valor al JS (Ver en behaviours de drupal cómo recogerlo)
    // $form['#attached']['drupalSettings']['publication_order']['publicationjs'] ['variable'] = 'value';

    kint($form);

  }

}

Creamos nuestro js/publication.js

(function ($) {
  Drupal.behaviors.publication_order = {
    attach: function (context, settings) {

      console.log( "Hola Mundo" );

      // Valor mandado por el form
      console.log(drupalSettings.publication_order.publicationjs.variable); // value


    }
  };
})(jQuery, Drupal, drupalSettings);