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');
MODULENAME.jsファイル内:
(function($) {
Drupal.behaviors.MODULENAME = {
attach: function (context, settings) {
alert(settings.MODULENAME.testvar);
}
};
})(jQuery);
この方法で、php変数をdrupal javascriptファイルに渡して、変数を使用することができます:)
上記をDrupal 8にどのように実装できますか?
drupal_add_js(array('MODULENAME' => array('testvar' => $testVariable)), array('type' => 'setting'));
の代わりに_$build['#attached']['drupalSettings']['testvar'] = $testVariable;
_を使用します。 _$build
_を、設定が関連付けられているフォームまたはレンダリング配列を含む変数に置き換えます。フォームビルダーまたはhook_form_alter()
では、_$form
_になります。
次に、ページに添付するJavaScriptコードをライブラリとして定義する必要があります。これは、JavaScriptとCSSをページまたはフォームに添付する唯一の方法です。
スタイルシート(CSS)とJavaScript(JS)をDrupal 8モジュール に追加するで説明されているので、ここでは繰り返さない。Iライブラリは少なくとも2つの依存関係を宣言する必要があることに注意してください。
これを行う別の方法( JS-standards で言及されている)は次のようになります。
$element['#attached']['js'][] = array(
'data' => array('myModule' => array('basePath' => base_path())),
'type' => 'setting',
);
この変数は、JS側から次のように参照されます。
Drupal.settings.myModule.basePath;