Использование переменных PHP в Javascript включает файлы для просмотра в MVC - PullRequest
2 голосов
/ 29 октября 2009

Предположим, я использую инфраструктуру MVC, и для моих представлений требуются файлы Javascript, расположенные во внешнем по отношению к представлению файле. Мой javascript, расположенный во внешнем файле, зависит, однако, от нескольких PHP-переменных на мой взгляд. Если бы я включил Javascript в тег внутри моего представления HTML, я мог бы просто вставить переменные PHP в Javascript.

Я знаю, что могу создавать скрытые поля ввода и назначать нужные мне переменные в качестве их значений. Есть ли другой, более элегантный способ?

Я знаю, что, возможно, смогу назвать имя файла .js именем .php, но я не слишком люблю это делать.

Ответы [ 3 ]

4 голосов
/ 29 октября 2009

Я не уверен, что полностью понимаю ваш вопрос, но если я правильно понял, не могли бы вы просто установить глобальные переменные javascript внутри тега script в представлении, которое затем будет передано вашей внешней js?

<script type="text/javascript">
  var myvar1 = <?=$myvar1 ?>;
  var myvar2 = "<?=$myvar2 ?>";
</script>
<script type="text/javascript" src="myexternaljs.js"></script>
1 голос
/ 29 октября 2009

Вы можете опубликовать их на странице, прежде чем включать другие скрипты, или использовать что-то вроде этого и включить php-файл, например js-файл:

ob_start();
//all variables here
echo 'var someJson = '
    . json_enode($someArray);
$content = ob_get_clean();

header('Content-Type: text/javascript');
header('Content-Length: ' . strlen($content)); //or mb_strlen with utf8
echo $content;
exit;

Вы можете добавить заголовки, чтобы обеспечить кэширование с помощью etag (hashing / id), последнего изменения или expire / pragma.

1 голос
/ 29 октября 2009

Вы можете сделать вызов из JS на сервер (например, REST), чтобы получить переменные, от которых вы зависите. Для этого вам придется создать сервис, но структура останется чистой.

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