Espero que alguém seja capaz de me ajudar. O problema é o seguinte: 1) Eu tenho um módulo no qual atribui a variável para enviar ao arquivo de modelo php.tpl
<?php
...
$testvar="Hello from alex!";
$variables['testvar'] = $testvar;
...
?>
Essa variável pode ser mostrada no arquivo php.tpl como
<?php print $testvar?>
2) Separei o arquivo .js Como posso obter acesso a esse arquivo .js variável dentro?
Eu sei como será se o arquivo .js estiver dentro de .php.tpl:
<?php
$testvar="Hello from alex!";
?>
<script type="text/javascript">
var myVar = '<?php print $testvar?>';
</script>
O problema é como fazer o mesmo se esses dois arquivos .js e .php.tpl estiverem separados?
7
javascript
Alexey
fonte
fonte
var myVar = <?php echo json_encode($testvar) ?>;
que resolverá esses problemas para você, independentemente do tipo de dados / conteúdo do PHP var.Respostas:
Você deve usar
drupal_add_js()
em seu módulo, não há necessidade de gerar a variável em seu.tpl.php
:E no seu JavaScript, você pode acessar o valor em
Drupal.settings.YOURMODULE.testvar
:O uso direto de variáveis globais (conforme sugerido no seu exemplo de código) é uma prática desencorajada em JavaScript, pois desorganiza o espaço de nomes global . Além disso, se o seu código for acionado no carregamento da página, verifique a seção "Comportamentos" na documentação do JavaScript no Drupal 7 (vale a pena ler a página inteira).
fonte
No seu arquivo MODULENAME.module, use o seguinte código.
E no MODULENAME.js, use o seguinte.
Dessa forma, você pode passar sua variável PHP para JavaScript e usá-la.
fonte
Para o Drupal 8 ,
drupal_add_js()
foi removido (já foi reprovado no Drupal 7) => veja isso para obter mais informações .A maneira de enviar informações PHP para Javascript é perfeitamente descrita pela resposta de @ 4k4 a uma pergunta semelhante.
Em JavaScript, eles podem ser usados da seguinte maneira:
fonte
*.libraries.yml
também deve haver uma dependência definida- core/drupalSettings
.