Espero que alguien pueda ayudarme. El problema es el siguiente: 1) Tengo un módulo en el que asigno la variable para enviarla al archivo de plantilla php.tpl
<?php
...
$testvar="Hello from alex!";
$variables['testvar'] = $testvar;
...
?>
Esta variable se puede mostrar en el archivo php.tpl como
<?php print $testvar?>
2) He separado el archivo .js ¿Cómo puedo obtener acceso a este archivo .js valioso dentro?
Sé cómo será si el archivo .js está dentro de .php.tpl:
<?php
$testvar="Hello from alex!";
?>
<script type="text/javascript">
var myVar = '<?php print $testvar?>';
</script>
El problema es cómo hacer lo mismo si estos dos archivos .js y .php.tpl están separados.
7
javascript
Alexey
fuente
fuente
var myVar = <?php echo json_encode($testvar) ?>;
que se encargará de dichos problemas, independientemente del tipo de datos / contenido de PHP var.Respuestas:
Debe usar
drupal_add_js()
en su módulo, no hay necesidad de generar la variable en su.tpl.php
:Y en su JavaScript, puede acceder al valor en
Drupal.settings.YOURMODULE.testvar
:El uso directo de variables globales (como se sugiere en su ejemplo de código) es una práctica desaconsejada en JavaScript, ya que satura el espacio de nombres global . Además, si su código se activa al cargar la página, consulte la sección "Comportamientos" en Administración de JavaScript en la documentación de Drupal 7 (vale la pena leer toda la página).
fuente
En su archivo MODULENAME.module use el siguiente código.
Y en MODULENAME.js usa el siguiente.
De esta manera, puede pasar su variable PHP a JavaScript y usarla.
fuente
Para Drupal 8 ,
drupal_add_js()
se eliminó (ya estaba en desuso en Drupal 7) => vea esto para obtener más información .La forma de enviar información PHP a Javascript se describe perfectamente mediante la respuesta de @ 4k4 a una pregunta similar.
En JavaScript, se pueden usar de la siguiente manera:
fuente
*.libraries.yml
también debe haber una dependencia definida para- core/drupalSettings
.