web-dev-qa-db-ja.com

Drupalビヘイビアのキャッチされていない参照エラー

Drupal 8.を使用しています。

私がやろうとしているのは:

  • アクティブノードにアクセスする
  • ノードからfield_testの値を取得し、変数に割り当てます
  • 変数をdrupalSettings関数に渡し、続いてアラートをトリガーするカスタムモジュール 'mycustommodule'に渡します

私のコンテンツタイプでは、コードで参照するフィールドであるfield_testフィールドを作成しました。ブロックは、このコンテンツタイプのページに配置されます。

これは私が使用しているJavaScriptコードです。

mycustomblock.libraries.yml

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

custom.js

(function ($, Drupal, drupalSettings) {
  Drupal.behaviors.mycustomblock = {
    attach: function (context, settings) {
      var testMe = drupalSettings.mycustomblock.test;
      alert(testMe);

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

私がJavaScriptコンソールから得るエラーはこれです。

Drupal is undefined

エラーメッセージはこの行を参照しています。

Drupal underlined in code

なぜかっこ内のDrupalのインスタンスがこのエラーをスローするのですか?

1
lane

コアライブラリを追加する必要がありますcore/drupalをライブラリの依存関係に追加します。これにより、カスタムモジュールのJavaScriptが実行される前に、DrupalコアJavaScriptがロードされることが保証されます。

したがって、mycustomblock.libraries.ymlは次のようになります。

custom:
  version: 1.x
  js:
    js/custom.js: {}
  dependencies:
    - core/jquery
    - core/drupal
    - core/drupalSettings
6
Mario Steinitz