Я разработчик 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 , поэтому мне нужна ваша помощь.
Большое спасибо за вашу помощь заранее.