Mam nadzieję, że ktoś może mi pomóc. Problem jest następujący: 1) Mam moduł, w którym przypisuję zmienną w celu wysłania do pliku szablonu php.tpl
<?php
...
$testvar="Hello from alex!";
$variables['testvar'] = $testvar;
...
?>
Ta zmienna może być pokazana w pliku php.tpl jak
<?php print $testvar?>
2) Oddzieliłem plik .js Jak mogę uzyskać dostęp do tego zmiennego pliku .js?
Wiem, jak to będzie, jeśli plik .js znajduje się w .php.tpl:
<?php
$testvar="Hello from alex!";
?>
<script type="text/javascript">
var myVar = '<?php print $testvar?>';
</script>
Problem polega na tym, jak to zrobić, jeśli te dwa pliki .js i .php.tpl są rozdzielone?
7
javascript
Alexey
źródło
źródło
var myVar = <?php echo json_encode($testvar) ?>;
który zadba o takich kwestiach dla ciebie, niezależnie od typu danych / treści PHP var za.Odpowiedzi:
Powinieneś użyć
drupal_add_js()
w swoim module, nie ma potrzeby wypisywania zmiennej w.tpl.php
:I w JavaScripcie, można dostęp wartość w
Drupal.settings.YOURMODULE.testvar
:Bezpośrednie użycie zmiennych globalnych (zgodnie z sugestią w przykładzie kodu) jest odradzaną praktyką w JavaScript, ponieważ zaśmieca globalną przestrzeń nazw . Ponadto, jeśli Twój kod jest uruchamiany podczas ładowania strony, sprawdź sekcję „Zachowania” w Zarządzaniu JavaScript w dokumentacji Drupal 7 (cała strona jest warta przeczytania).
źródło
W swoim pliku MODULENAME.module użyj następującego kodu.
I w MODULENAME.js użyj następującego.
W ten sposób możesz przekazać swoją zmienną PHP do JavaScript i użyć jej.
źródło
Dla Drupal 8 ,
drupal_add_js()
usunięto (został przestarzałe już w Drupal 7) => zobaczyć dalszych informacji .Sposób przesyłania informacji PHP do Javascript jest doskonale opisany w odpowiedzi @ 4k4 na podobne pytanie.
W JavaScript mogą być używane w następujący sposób:
źródło
*.libraries.yml
należy również zdefiniować zależność- core/drupalSettings
.