как получить: <script>var test = {work: 'local', language_of-site: 'en'} </script> в drupal 8? - PullRequest
0 голосов
/ 09 января 2019

Я разработчик Drupal 7, и я стараюсь сделать так много вещей в Drupal 8, но, поскольку я новичок в D8, я думаю, что что-то упустил ... Не могли бы вы помочь мне, пожалуйста?

Я объясняю свою проблему.

Мне нужно поместить этот скрипт в Drupal 8:

<script> 
var test =  { workspace: 'localhost', language_of-site : 'en' } 
</script>

Во-первых: рабочая область должна определять, находимся ли мы в локальной или подготовительной или производственной среде; language_of_site предназначен для определения языка страницы. Я уже сделал это, и это работает очень хорошо.

Второе: переменная test должна быть объявлена. Например, если я открываю консоль на своей веб-странице и записываю ленту «test», то результатом должно быть рабочее пространство: «local», language_of-site: «en».

Я показываю, что я сделал:

В myfile.librairies.yml

global:
  js:
    js/worklanguage.js: {}

В mymodule.module

/**
 * Implements hook_page_attachments().
 */
function mymodule_page_attachments(array &$page) {
  $test = array();
  $test['workspace'] = \Drupal::request()->getHost();
  $test['language'] = \Drupal::languageManager()->getCurrentLanguage()->getId();
  $page['#attached']['drupalSettings']['test'] = "{ workspace : ". $tc_vars['workspace'] . ", language : " . $tc_vars['language'] . "}";
}

В myworklanguage.js

(function ($, Drupal, drupalSettings) {
    var test= Drupal.settings.test;
)(jQuery, drupalSettings);

В конце на странице просмотра исходного кода я получаю:

<script type="application/json" data-drupal-selector="drupal-settings-json">"test":{"workspace":"LOCALHOST", "language":"en"}</script>

Но, как я уже сказал, переменная test равна undefined в Console Web , поэтому мне нужна ваша помощь.

Большое спасибо за вашу помощь заранее.

...