2017-04-24 21 views
0

modulename.libraries.ymlファイルの外部JS(Google MAP API URL)に動的パラメータ(APIキー)を渡す必要があります。 APIキーは管理者によってDrupal Configフォームに保存されているためです。Drupal 8の外部js URLに動的パラメータを渡す方法

modulename.libraries.yml: google.mapaddr: js: https://maps.googleapis.com/maps/api/js?key=[API-KEY]&libraries=places: { type: external }

のDrupal 8の規格で外部JSパラメータにコンフィグ変数を渡すために私たちを案内してください。

ありがとうございました。

答えて

0

動的ライブラリ定義を追加します。

使用hook_library_info_build()機能

/** 
* Implements hook_library_info_build(). 
*/ 

function my_module_library_info_build() { 

$config = \Drupal::config('my_module.settings'); 
$api_key = $config->get('my_module.api_key'); 

$libraries = []; 

$libraries['my_module_js'] = [ 
    'version' => '1.x', 
    'header' => true, 
    'js' => [ 
     'https://my.external.com/' => [ 
      'type' => 'external', 
      'minified' => true, 
      'attributes' => [ 
       'key' => "$api_key", 
       'async' => "async", 
      ], 
     ], 
    ], 
]; 

return $libraries; 

}

私は、それはあなたのために有用である可能性がある願っています。

+0

ありがとうございます:)私のコメントに従って、正しく動作させるために修正した後で動作します。 –

0

上記の提案通り、以下のコードを更新しても問題ありません。

/** 
* Implements hook_library_info_build() 
*/ 
function my_module_library_info_build() { 
    $config = \Drupal::config('my_module.settings'); 
    $api_key = $config->get('api_key'); 
    $libraries = []; 
    $libraries['my_module.libraryid'] = [ 
    'version' => '1.x', 
    'js' => [ 
     'https://maps.googleapis.com/maps/api/js?key='.$api_key.'&libraries=places' => [ 
      'type' => 'external', 
     ], 
    ], 
    ]; 
    return $libraries; 
} 

また、我々は形式以下のようなmodulename.libraries.ymlファイル内の別のライブラリの「依存関係」として、このダイナミックライブラリを含めることができます。

custom-js: 
    version: VERSION 
    js: 
    js/custom.js: {} 
     dependencies: 
     - core/jquery 
     - my_module/my_module.libraryid 
関連する問題