Dans votre fichier MODULENAME.module:
$testVariable = 'himanshu';
drupal_add_js(array('MODULENAME' => array('testvar' => $testVariable)), array('type' => 'setting'));
drupal_add_js(drupal_get_path('module', 'MODULENAME') . '/MODULENAME.js');
Dans le fichier MODULENAME.js:
(function($) {
Drupal.behaviors.MODULENAME = {
attach: function (context, settings) {
alert(settings.MODULENAME.testvar);
}
};
})(jQuery);
de cette façon, vous pouvez passer votre variable php dans drupal fichier javascript et utiliser la variable :)
Comment puis-je implémenter ce qui précède dans Drupal 8?
Au lieu de drupal_add_js(array('MODULENAME' => array('testvar' => $testVariable)), array('type' => 'setting'));
vous utilisez $build['#attached']['drupalSettings']['testvar'] = $testVariable;
. Remplacez $build
Par la variable contenant le formulaire ou le tableau de rendu auquel les paramètres sont attachés; dans un générateur de formulaire ou hook_form_alter()
, ce serait $form
.
Le code JavaScript à attacher à la page doit alors être défini comme bibliothèque, qui est le seul moyen d'attacher JavaScript et CSS à une page ou un formulaire.
Il est expliqué dans Ajout de feuilles de style (CSS) et JavaScript (JS) à un Drupal 8 , donc je ne le répéterai pas ici. Je remarquera simplement que la bibliothèque doit déclarer au moins deux dépendances:
Une autre façon de le faire (comme mentionné dans normes JS ) serait:
$element['#attached']['js'][] = array(
'data' => array('myModule' => array('basePath' => base_path())),
'type' => 'setting',
);
Cette variable serait alors référencée du côté JS comme:
Drupal.settings.myModule.basePath;