как отправить переменную из .php-файла в файл .js?

Я надеюсь, что кто-то сможет мне помочь. Проблема заключается в следующем: 1) У меня есть модуль, в котором назначить переменную для отправки в файл шаблона php.tpl

& л;? PHP
...
$ testvar = "Привет из alex!";
$ variables ['testvar'] = $ testvar;
...
? >

Эта переменная может быть показана в файле php.tpl, например

<? php print $ testvar?>

2) Я разделил файл .js Как я могу получить доступ к этой переменной в файле .js?

Я знаю, как это будет, если файл .js находится внутри .php.tpl:

& л;? PHP
$ testvar = "Привет из alex!";
? >
<script type = "text /javascript">
var myVar = '<? php print $ testvar?>';
& Lt; /сценарий >

Проблема в том, как сделать то же самое, если эти два файла .js и .php.tpl разделены?

35 голосов | спросил alexey 11 Maypm11 2011, 17:07:57

3 ответа


63

Вы должны использовать drupal_add_js () в вашем модуле нет необходимости выводить переменную в .tpl.php:

drupal_add_js (массив ('YOURMODULE' => array ('testvar' => $ testvar)), array ('type' => 'setting'));

И в вашем JavaScript вы можете получить доступ к значению в Drupal.settings.YOURMODULE.testvar:

оповещения (Drupal.settings.YOURMODULE.testvar);

Прямое использование глобальных переменных (как предлагается в вашем примере кода) - это обескураженная практика в JavaScript, поскольку она загромождает глобальное пространство имен . Кроме того, если ваш код запускается при загрузке страницы, проверьте раздел «Поведение» в управлении JavaScript в Drupal 7 documention (вся страница стоит прочитать).

ответил Pierre Buyle 11 Maypm11 2011, 18:11:31
14

В вашем файле 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 используйте следующий.

(функция ($) {
  Drupal.behaviors.MODULENAME = {
    attach: функция (контекст, настройки) {
      оповещения (settings.MODULENAME.testvar);
    }
  };

}) (Jquery);

Таким образом, вы можете передать свою PHP-переменную на JavaScript и использовать ее.

ответил Himanshu Pathak 29 Mayam13 2013, 08:44:17
2

Для Drupal 8 , drupal_add_js () был удален (он уже устарел в Drupal 7) => см. это для дополнительной информации .

Способ отправки информации PHP в Javascript прекрасно описывается ответом @ 4k4 на аналогичный вопрос.

return [
  '#theme' => 'Item_list',
  '#list_type' => «Уль»,
  '#items' => $ my_items,
  '#attributes' => ['class' => 'Some_class'],
  '#attached' => [
    'library' => [ 'My_module /my_library'],
    'drupalSettings' => [
      'my_library' => [
        'some_variable1' => $ value, //<== Переменные пройдены
        'another_variable' => $ take_this, //<==
      ],
    ],
  ],
];

В JavaScript они могут использоваться следующим образом:

(функция ($, Drupal, drupalSettings) {
  Drupal.behaviors.my_library = {
    attach: функция (контекст, настройки) {

      оповещения (drupalSettings.my_library.some_variable); //предупреждает значение значения $ PHP

    }
  };
}) (jQuery, Drupal, drupalSettings);
ответил Florian Müller 15 MarpmThu, 15 Mar 2018 15:39:41 +03002018-03-15T15:39:41+03:0003 2018, 15:39:41

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132