D8 Javascript en Módulos - pierregermain/MyDrupal GitHub Wiki
Links:
- https://www.drupal.org/docs/8/creating-custom-modules/adding-stylesheets-css-and-javascript-js-to-a-drupal-8-module
- https://www.drupal.org/docs/8/creating-custom-modules/add-a-form-to-the-block-configuration
- https://drupal.stackexchange.com/questions/194050/add-javascript-to-form-by-module
- https://www.drupal.org/node/2806671
- https://www.drupal.org/node/2575207
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);