Ich hoffe jemand kann mir helfen. Das Problem ist das folgende: 1) Ich habe ein Modul, in dem eine Variable zugewiesen wird, um sie an die Vorlagendatei php.tpl zu senden
<?php
...
$testvar="Hello from alex!";
$variables['testvar'] = $testvar;
...
?>
Diese Variable kann wie in der php.tpl Datei angezeigt werden
<?php print $testvar?>
2) Ich habe die .js-Datei getrennt. Wie kann ich auf diese Variable in der .js-Datei zugreifen?
Ich weiß, wie es sein wird, wenn sich die .js-Datei in .php.tpl befindet:
<?php
$testvar="Hello from alex!";
?>
<script type="text/javascript">
var myVar = '<?php print $testvar?>';
</script>
Das Problem ist, wie man dasselbe macht, wenn diese beiden Dateien .js und .php.tpl getrennt sind.
7
javascript
Alexey
quelle
quelle
var myVar = <?php echo json_encode($testvar) ?>;
dies, um solche Probleme für Sie zu lösen, unabhängig vom Datentyp / Inhalt der PHP-Variablen.Antworten:
Sie sollten
drupal_add_js()
in Ihrem Modul verwenden, es besteht keine Notwendigkeit, die Variable in Ihrem auszugeben.tpl.php
:Und in Ihrem JavaScript können Sie auf den Wert zugreifen in
Drupal.settings.YOURMODULE.testvar
:Die direkte Verwendung globaler Variablen (wie in Ihrem Codebeispiel vorgeschlagen) wird in JavaScript nicht empfohlen, da sie den globalen Namespace überladen . Wenn Ihr Code beim Laden einer Seite ausgelöst wird, lesen Sie den Abschnitt "Verhalten" in der Dokumentation zum Verwalten von JavaScript in Drupal 7 (die gesamte Seite ist lesenswert).
quelle
Verwenden Sie in Ihrer Datei MODULENAME.module den folgenden Code.
Und in MODULENAME.js verwenden Sie den folgenden.
Auf diese Weise können Sie Ihre PHP-Variable an JavaScript übergeben und verwenden.
quelle
Für Drupal 8 wurde
drupal_add_js()
es entfernt (in Drupal 7 war es bereits veraltet) => Weitere Informationen finden Sie hier .Die Möglichkeit, PHP-Informationen an Javascript zu senden, wird durch die Antwort von @ 4k4 auf eine ähnliche Frage perfekt beschrieben .
In JavaScript können sie wie folgt verwendet werden:
quelle
*.libraries.yml
dort auch eine Abhängigkeit definiert werden soll- core/drupalSettings
.