Cakephp: как передать значения в файл JavaScript? - PullRequest
3 голосов
/ 21 февраля 2011

У меня есть некоторый javascript, который включается в представление, и я использовал метод inkedmn в этой теме: добавление javascript-для-страницы-для-каждого-представления-в-торт-php

Итак, теперь у меня есть следующий код в моем представлении:

$this->set('jsIncludes',array('google'));   // this will link to /js/google.js

Но мне нужно передать некоторые значения из представления в файл javascript, и я не уверен, как этого добиться.

Обновление: я полагаю, что одним из вариантов было бы отобразить значения в файле php, заключить их в тег div, а затем использовать getElementById () в коде javascript.

Ответы [ 4 ]

9 голосов
/ 21 февраля 2011

Вы должны иметь возможность вставлять тег непосредственно в HTML с данными, которые вы хотите:

<script type="text/javascript">
var mynum = <?php echo intval($num); ?>;
var mystring = "<?php echo addslashes($string); ?>";
var myarray = <?php echo json_encode(array("one" => 1, "two" => 2)); ?>;
</script>

Любой JavaScript в другом месте должен иметь возможность использовать эти переменные.

Примечание: если код, использующий эти данные, запускается ранее на странице, они, очевидно, пока не увидят эти переменные.Если это так, либо убедитесь, что ваши данные загружаются первыми, либо вы можете отложить выполнение кода до полной загрузки страницы, используя либо setTimeout (), либо событие document.onready.

1 голос
/ 21 февраля 2011

У вас есть код, который запускается автоматически? Вы можете обернуть его внутри функции и передать функции необходимые параметры.

Например, давайте на данный момент у вас есть следующий код в my-script.js:

window.onload = function() {
  alert('My favorite fruits are apples, and my favorite color is red.');
}

Оберните это в функцию, подобную этой:

function initialize(args) {
  window.onload = function() {
    alert('My favorite fruits are ' + args.fruit +
     ', and my favorite color is ' + args.color + '.');
    }
  }

Затем выведите элемент <script>, используя PHP где-нибудь после загрузки my-script.js, и вызовите функцию. Вот пример вывода:

<script>
  initialize({fruit: 'apples', color: 'red'});
</script>
0 голосов
/ 28 июля 2015

Это следующие шаги:

1) Включите помощник js в AppController.php

public $helpers = array('Js');

2) Теперь объявите переменную js в файле ctp. Вот так:

$state = 'rajasthan';
$this->Js->set('state_name',$state);
echo $this->Js->writeBuffer(array('onDomReady' => false));

3) Теперь используйте это js vairable "имя_состояния" в файле js. Вот так:

console.log(window.app.state_name);
var state = window.app.state_name;
0 голосов
/ 24 мая 2013
$this->Js->set('varname',$value);

из файла js

var myvar = window.app.varname;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...