Saya harap seseorang dapat membantu saya. Masalahnya adalah yang berikut: 1) Saya memiliki modul di mana menetapkan variabel untuk mengirim ke file template php.tpl
<?php
...
$testvar="Hello from alex!";
$variables['testvar'] = $testvar;
...
?>
Variabel ini dapat ditampilkan dalam file php.tpl seperti
<?php print $testvar?>
2) Saya telah memisahkan file .js. Bagaimana saya bisa mendapatkan akses ke file dalam .js yang dapat diperbarui ini?
Saya tahu bagaimana jadinya jika file .js ada di dalam .php.tpl:
<?php
$testvar="Hello from alex!";
?>
<script type="text/javascript">
var myVar = '<?php print $testvar?>';
</script>
Masalahnya adalah bagaimana melakukan hal yang sama jika kedua file .js dan .php.tpl ini dipisahkan?
7
javascript
Alexey
sumber
sumber
var myVar = <?php echo json_encode($testvar) ?>;
yang akan menangani masalah apa pun untuk Anda, terlepas dari tipe data / konten PHP var.Jawaban:
Anda harus menggunakan
drupal_add_js()
modul Anda, tidak perlu menampilkan variabel di.tpl.php
:Dan di JavaScript Anda, Anda dapat mengakses nilai di
Drupal.settings.YOURMODULE.testvar
:Penggunaan langsung variabel global (seperti yang disarankan dalam sampel kode Anda) adalah praktik yang tidak disarankan dalam JavaScript karena mengacaukan namespace global . Juga, jika kode Anda dipicu pada pemuatan halaman, periksa bagian "Perilaku" di Mengelola JavaScript dalam dokumentasi Drupal 7 (seluruh halaman layak dibaca).
sumber
Dalam file MODULENAME.module Anda gunakan kode berikut.
Dan di MODULENAME.js gunakan yang berikut ini.
Dengan cara ini, Anda dapat meneruskan variabel PHP Anda ke JavaScript, dan menggunakannya.
sumber
Untuk Drupal 8 ,
drupal_add_js()
sudah dihapus (sudah tidak digunakan lagi di Drupal 7) => lihat ini untuk informasi lebih lanjut .Cara mengirim informasi PHP ke Javascript dijelaskan dengan sempurna oleh jawaban @ 4k4 untuk pertanyaan serupa.
Dalam JavaScript, mereka dapat digunakan sebagai berikut:
sumber
*.libraries.yml
sana juga harus ada ketergantungan- core/drupalSettings
.