Использование переменной smarty в функции jQuery - PullRequest
3 голосов
/ 28 мая 2011

Мой php генерирует некоторый тип из БД и передается в переменную Smarty $ X.

С помощью Jquery я хочу иметь возможность нажать кнопку, и содержимое одного измой div будет заменен на $ X.

$(document).ready(function(){
  $("button").click(function(){
    $("#div1").html($X);
   });
});

Этот фрагмент скрипта Jquery включен во внешний файл js.

1 Ответ

4 голосов
/ 28 мая 2011

Если у вас есть файл шаблона, который анализируется, где вы можете вывести переменные, присвоенные PHP-> Smarty, вы можете создать глобальную переменную JS в шаблоне, а затем использовать эту глобальную переменную в вашем JS как обычно.

Например:

Файл шаблона

<script type="text/javascript">
var MyGlobalVar = "{$MyGlobalVar}";
</script>

Файл Global.js

$(document).ready(function(){
    $("button").click(function(){
        if (MyGlobalVar != '') {
            $("#div1").html(MyGlobalVar);
        } else {
            alert('Error! Error! Abort!');
        }
    });
});

Обратите внимание, что вы можете вывести файл Global.js с его анализом в Smarty (хотя ... это, вероятно, не очень хорошая идея) и таким образом внедрить ваши переменные PHP-> Smarty.Это будет рассматривать включенный файл Global.js как шаблон Smarty.

Для этого вам нужно будет использовать {literal}, возможно, назовите файл с окончанием файла .php (чтобы он был PHP-разборный), и добавьте PHP header() вызовите, чтобы PHP выводил содержимое файла в браузер как тип содержимого Javascript.

Global.js

<?php

header("content-type: text/javascript");

?>
var MyGlobalVar = "{$MyGlobalVar}";
{literal}
$(document).ready(function(){
    $("button").click(function(){
        if (MyGlobalVar != '') {
            $("#div1").html(MyGlobalVar);
        } else {
            alert('Error! Error! Abort!');
        }
    });
});
{/literal}

Кроме того, на стороне PHP выВозможно, вы захотите добавить косую черту в вашу переменную, особенно если переменная JS будет содержать HTML или другие фрагменты текста, которые будут использовать одинарные / двойные кавычки.

...